53 const IntTab& Face_sommets,
54 const IntTab& Face_voisins,
55 const IntTab& elem_faces,
56 const Domaine& domaine_geom)
const
60 double x1,y1,z1,x2,y2,z2;
66 int n0 = Face_sommets(num_Face,0);
67 int n1 = Face_sommets(num_Face,1);
68 int n2 = Face_sommets(num_Face,2);
69 int n3 = Face_sommets(num_Face,3);
74 Face_normales(num_Face,0) = 0;
75 Face_normales(num_Face,1) = 0;
76 Face_normales(num_Face,2) = 0;
80 x1 = les_coords(n0,0) - les_coords(n1,0);
81 y1 = les_coords(n0,1) - les_coords(n1,1);
82 z1 = les_coords(n0,2) - les_coords(n1,2);
84 x2 = les_coords(n3,0) - les_coords(n1,0);
85 y2 = les_coords(n3,1) - les_coords(n1,1);
86 z2 = les_coords(n3,2) - les_coords(n1,2);
88 nx = (y1*z2 - y2*z1)/2;
89 ny = (-x1*z2 + x2*z1)/2;
90 nz = (x1*y2 - x2*y1)/2;
95 elem1=Face_voisins(num_Face,0);
97 if ( (f0 = elem_faces(elem1,0)) == num_Face )
98 f0 = elem_faces(elem1,1);
100 if ( (no4 = Face_sommets(f0,0)) != n0 && no4 != n1
101 && no4 != n2 && no4 != n3)
103 else if ( (no4 = Face_sommets(f0,1)) != n0 && no4 != n1
104 && no4 != n2 && no4 != n3)
106 else if ( (no4 = Face_sommets(f0,2)) != n0 && no4 != n1
107 && no4 != n2 && no4 != n3)
110 no4 = Face_sommets(f0,3);
112 x1 = les_coords(no4,0) - les_coords(n0,0);
113 y1 = les_coords(no4,1) - les_coords(n0,1);
114 z1 = les_coords(no4,2) - les_coords(n0,2);
116 if ( (nx*x1+ny*y1+nz*z1) > 0 )
118 Face_normales(num_Face,0) += -nx;
119 Face_normales(num_Face,1) += -ny;
120 Face_normales(num_Face,2) += -nz;
124 Face_normales(num_Face,0) += nx;
125 Face_normales(num_Face,1) += ny;
126 Face_normales(num_Face,2) += nz;
131 x1 = les_coords(n0,0) - les_coords(n2,0);
132 y1 = les_coords(n0,1) - les_coords(n2,1);
133 z1 = les_coords(n0,2) - les_coords(n2,2);
135 x2 = les_coords(n3,0) - les_coords(n2,0);
136 y2 = les_coords(n3,1) - les_coords(n2,1);
137 z2 = les_coords(n3,2) - les_coords(n2,2);
139 nx = (y1*z2 - y2*z1)/2;
140 ny = (-x1*z2 + x2*z1)/2;
141 nz = (x1*y2 - x2*y1)/2;
146 elem1=Face_voisins(num_Face,0);
148 if ( (f0 = elem_faces(elem1,0)) == num_Face )
149 f0 = elem_faces(elem1,1);
151 if ( (no4 = Face_sommets(f0,0)) != n0 && no4 != n1
152 && no4 != n2 && no4 != n3)
154 else if ( (no4 = Face_sommets(f0,1)) != n0 && no4 != n1
155 && no4 != n2 && no4 != n3)
157 else if ( (no4 = Face_sommets(f0,2)) != n0 && no4 != n1
158 && no4 != n2 && no4 != n3)
161 no4 = Face_sommets(f0,3);
163 x1 = les_coords(no4,0) - les_coords(n0,0);
164 y1 = les_coords(no4,1) - les_coords(n0,1);
165 z1 = les_coords(no4,2) - les_coords(n0,2);
167 if ( (nx*x1+ny*y1+nz*z1) > 0 )
169 Face_normales(num_Face,0) += -nx;
170 Face_normales(num_Face,1) += -ny;
171 Face_normales(num_Face,2) += -nz;
175 Face_normales(num_Face,0) += nx;
176 Face_normales(num_Face,1) += ny;
177 Face_normales(num_Face,2) += nz;