ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/diamesh/src/p3d_connec.cpp
Revision: 272
Committed: Mon Dec 13 21:04:45 2010 UTC (14 years, 5 months ago) by francois
File size: 4422 byte(s)
Log Message:
suppression des warnings

File Contents

# User Rev Content
1 5 #include <stdio.h>
2     #include <string.h>
3     #include "p3d_cst.h"
4     #include "m3d_struct.h"
5     #include "m3d_hotes.h"
6     #include "m3d_erreur.h"
7     #define MAX_LINE 256
8     #include "prototype.h"
9     extern int debug ;
10     extern int check ;
11     extern GEST_MEM *gest ;
12     int p3d_connec(void)
13     {
14     /* ************************************************* */
15     /* declaration des variables internes a la procedure */
16     int i, num1, num2, num3 ;
17     int is_fich = 0 ;
18     char *ext ;
19     char temp[MAX_LINE] ;
20     FILE *stream ;
21    
22     /*
23     table contenant les tetes de liste de segments
24     tab_seg[i] contient la tete de liste des segments
25     dont le premier noeud est le noeud de numero i
26     Ces segments sont crees a partir des elements
27     */
28     SEGMENT *tete ;
29     /* insertion d'un segment dans la table des segments commencant par le meme noeud */
30    
31     /* ************************************************* */
32     /* debut du code executable */
33     /* parcours du tableau des elements et creation des segments */
34     /* par element on rentre 3 segments */
35     /* parcours de la liste des elements */
36     for (i=0;i<gest->nb_2d;i++)
37     {
38     num1 = gest->tabele[3*i] ;
39     num2 = gest->tabele[3*i+1] ;
40     num3 = gest->tabele[3*i+2] ;
41     if (!p3d_i_segtab(num1,num2,i)) return(FAUX) ;
42     if (!p3d_i_segtab(num1,num3,i)) return(FAUX) ;
43     if (!p3d_i_segtab(num2,num3,i)) return(FAUX) ;
44     }
45     /* en sortie, on a des listes d'aretes d'elements rangees suivant le premier noeud */
46    
47     /* construction des connectivites :
48     les elements connectes a chaque arete doivent etre au nombre de 2 exactement,
49     si moins : la peau est ouverte, si plus : mauvaise definition du probleme */
50     /* parcours du tableau tab */
51    
52     if (!check)
53     {
54     i = 0 ;
55     while (i<gest->nb_init)
56     {
57     tete = gest->tab_seg[i] ;
58     while (tete!=NULL)
59     {
60     if (tete->card<2)
61     {
62     if (!is_fich)
63     {
64     is_fich = VRAI ;
65 francois 272 ext = (char*)".ERR" ;
66 5 temp[0] = 0 ;
67     strcpy(temp,gest->buffer) ;
68     strncat(temp,ext,4) ;
69     if (!(stream = fopen(temp,"w")))
70     {
71     m3d_erreur(ERR_FIN) ;
72     return(FAUX) ;
73     }
74     fprintf(stream,"*************************************************************************************\n") ;
75     fprintf(stream,"-----------------------------------DIAMESH-------------------------------------------\n") ;
76     fprintf(stream," ANOMALIES EVENTUELLES DU MAILLAGE DE PEAU - SKIN MESH ERRORS \n") ;
77     fprintf(stream,"*************************************************************************************\n\n") ;
78     fprintf(stream,"Une arete doit etre connectee a au moins 2 triangles\n") ;
79     fprintf(stream,"An edge must be connected to 2 triangles exactly\n\n") ;
80     }
81     fprintf(stream,"L'arete %d-%d est connectee a %d triangles - Edge %d-%d is linked to %d triangles\n",
82     gest->tabcor[tete->n1+1],gest->tabcor[tete->n2+1],tete->card,gest->tabcor[tete->n1+1],gest->tabcor[tete->n2+1],tete->card) ;
83     }
84     tete=tete->suivant ;
85     }
86     i ++ ;
87     }
88     }
89     else
90     {
91     i = 0 ;
92     while (i<gest->nb_init)
93     {
94     tete = gest->tab_seg[i] ;
95     while (tete!=NULL)
96     {
97     if (tete->card!=2)
98     {
99     if (!is_fich)
100     {
101     is_fich = VRAI ;
102 francois 272 ext = (char*)".ERR" ;
103 5 temp[0] = 0 ;
104     strcpy(temp,gest->name) ;
105     strncat(temp,ext,4) ;
106     if (!(stream = fopen(temp,"w")))
107     {
108     m3d_erreur(ERR_FIN) ;
109     return(FAUX) ;
110     }
111     fprintf(stream,"*************************************************************************************\n") ;
112     fprintf(stream,"-----------------------------------DIAMESH-------------------------------------------\n") ;
113     fprintf(stream," ANOMALIES EVENTUELLES DU MAILLAGE DE PEAU - SKIN MESH ERRORS \n") ;
114     fprintf(stream,"*************************************************************************************\n\n") ;
115     fprintf(stream,"Une arete doit etre connectee a au moins 2 triangles\n") ;
116     fprintf(stream,"An edge must be connected to 2 triangles exactly\n\n") ;
117     }
118     fprintf(stream,"L'arete %d-%d est connectee a %d triangles - Edge %d-%d is linked to %d triangles\n",
119     gest->tabcor[tete->n1+1],gest->tabcor[tete->n2+1],tete->card,gest->tabcor[tete->n1+1],gest->tabcor[tete->n2+1],tete->card) ;
120     }
121     tete=tete->suivant ;
122     }
123     i ++ ;
124     }
125     }
126     if (is_fich) fclose(stream) ;
127     if (is_fich) m3d_erreur(ERR_SKIN) ;
128    
129     if (gest->icode != FAUX) return(FAUX) ;
130     return(VRAI) ;
131     }
132    
133