ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/acismesh/test_front.cpp
Revision: 1
Committed: Mon Jun 11 22:53:07 2007 UTC (17 years, 11 months ago)
File size: 6292 byte(s)
Log Message:

File Contents

# Content
1 /*****************************************************************
2
3 test_front.cpp Type:func
4
5 teste la validite du front
6
7 Date de creation : 5-5-1999 13 :43 :29
8 Derniere version : 5-5-1999 13 :43 :29
9
10 Vincent FRANCOIS
11
12 *****************************************************************/
13
14
15
16
17
18 /**************************/
19 /* include */
20 #include <stdio.h>
21 #include <string.h>
22 #include <stdlib.h>
23 #include <math.h>
24 #include "const.h"
25 #include "memoire.h"
26 #include "struct.h"
27 #include "struct3d.h"
28 #include "prototype.h"
29
30
31 /**************************/
32 /* variables globales */
33 extern struct environnment env;
34 extern struct s_mesh *mesh;
35
36
37
38 /**************************/
39 /* programme principal */
40
41 int test_front(void)
42 {
43 int i,erreur;
44 char mess[255];
45 struct s_tetra *tet;
46 struct s_front3d *ft,*ft1,*ft2,*ft3,*ft11,*ft12,*ft13,*ft21,*ft22,*ft23,*ft31,*ft32,*ft33;
47 struct s_noeud *no1,*no2,*no3,*no4;
48 float n1n2[4],n1n3[4],n1n4[4],n[4];
49
50 erreur=0;
51 for (i=0;i<12;i++)
52 {
53 ft=mesh->tete_front3d[i];
54 while (ft!=NULL)
55 {
56 no1=ADRESSE(ft->n1,noeud,mesh->);
57 no2=ADRESSE(ft->n2,noeud,mesh->);
58 no3=ADRESSE(ft->n3,noeud,mesh->);
59 VEC(n1n2,no1,no2);
60 VEC(n1n3,no1,no3);
61 PVEC(n,n1n2,n1n3);
62 NORME(n);
63 if (ft->tri->type==FACE)
64 {
65 if (((ft->n1!=ft->tri->n1)&&(ft->n2!=ft->tri->n2)&&(ft->n3!=ft->tri->n3))
66 && ((ft->n1!=ft->tri->n2)&&(ft->n2!=ft->tri->n3)&&(ft->n3!=ft->tri->n1))
67 && ((ft->n1!=ft->tri->n3)&&(ft->n2!=ft->tri->n1)&&(ft->n3!=ft->tri->n2)))
68 {
69 sprintf(mess,"Front mal oriente avec la frontiere. Etape numero %d. Front %d %d %d",mesh->nb_tetra,ft->n1,ft->n2,ft->n3);
70 aff_text(mess);
71 erreur=1;
72 }
73 }
74 else
75 {
76 tet=ft->tri->tetra[0];
77 if (tet->n1!=ft->n1)
78 if (tet->n1!=ft->n2)
79 if (tet->n1!=ft->n3)
80 no4=ADRESSE(tet->n1,noeud,mesh->);
81 if (tet->n2!=ft->n1)
82 if (tet->n2!=ft->n2)
83 if (tet->n2!=ft->n3)
84 no4=ADRESSE(tet->n2,noeud,mesh->);
85 if (tet->n3!=ft->n1)
86 if (tet->n3!=ft->n2)
87 if (tet->n3!=ft->n3)
88 no4=ADRESSE(tet->n3,noeud,mesh->);
89 if (tet->n4!=ft->n1)
90 if (tet->n4!=ft->n2)
91 if (tet->n4!=ft->n3)
92 no4=ADRESSE(tet->n4,noeud,mesh->);
93 VEC(n1n4,no1,no4);
94 NORME(n1n4);
95 if (PSCA(n1n4,n)>-0.0001)
96 {
97 sprintf(mess,"Front mal oriente. Etape numero %d. Front %d %d %d",mesh->nb_tetra,ft->n1,ft->n2,ft->n3);
98 aff_text(mess);
99 erreur=1;
100 }
101 }
102 ft1=ft->voisin[0].ft;
103 ft2=ft->voisin[1].ft;
104 ft3=ft->voisin[2].ft;
105 ft11=ft1->voisin[0].ft;
106 ft12=ft1->voisin[1].ft;
107 ft13=ft1->voisin[2].ft;
108 ft21=ft2->voisin[0].ft;
109 ft22=ft2->voisin[1].ft;
110 ft23=ft2->voisin[2].ft;
111 ft31=ft3->voisin[0].ft;
112 ft32=ft3->voisin[1].ft;
113 ft33=ft3->voisin[2].ft;
114 if ((ft11!=ft)&&(ft12!=ft)&&(ft13!=ft))
115 {
116 sprintf(mess,"Front invalide. Etape numero %d. Front %d %d %d voisin 0",mesh->nb_tetra,ft->n1,ft->n2,ft->n3);
117 aff_text(mess);
118 erreur=1;
119 }
120 if ((ft21!=ft)&&(ft22!=ft)&&(ft23!=ft))
121 {
122 sprintf(mess,"Front invalide. Etape numero %d. Front %d %d %d voisin 1",mesh->nb_tetra,ft->n1,ft->n2,ft->n3);
123 aff_text(mess);
124 erreur=1;
125 }
126 if ((ft31!=ft)&&(ft32!=ft)&&(ft33!=ft))
127 {
128 sprintf(mess,"Front invalide. Etape numero %d. Front %d %d %d voisin 2",mesh->nb_tetra,ft->n1,ft->n2,ft->n3);
129 aff_text(mess);
130 erreur=1;
131 }
132 if (ft->tri->front!=1)
133 {
134 sprintf(mess,"Front invalide. Etape numero %d. Front %d %d %d triangle",mesh->nb_tetra,ft->n1,ft->n2,ft->n3);
135 aff_text(mess);
136 erreur=1;
137 }
138 if (ft->tri->ft!=ft)
139 {
140 sprintf(mess,"Front invalide. Etape numero %d. Front %d %d %d triangle front",mesh->nb_tetra,ft->n1,ft->n2,ft->n3);
141 aff_text(mess);
142 erreur=1;
143 }
144 ft=ft->suivant;
145 }
146 }
147
148 return(erreur);
149
150 }