47 const IntTab& Face_sommets,
48 const IntTab& Face_voisins,
49 const IntTab& elem_faces,
50 const Domaine& domaine_geom)
const
54 double x1,y1,z1,x2,y2,z2;
60 int n0 = Face_sommets(num_Face,0);
61 int n1 = Face_sommets(num_Face,1);
62 int n2 = Face_sommets(num_Face,2);
63 int n3 = Face_sommets(num_Face,3);
68 Face_normales(num_Face,0) = 0;
69 Face_normales(num_Face,1) = 0;
70 Face_normales(num_Face,2) = 0;
74 x1 = les_coords(n0,0) - les_coords(n1,0);
75 y1 = les_coords(n0,1) - les_coords(n1,1);
76 z1 = les_coords(n0,2) - les_coords(n1,2);
78 x2 = les_coords(n3,0) - les_coords(n1,0);
79 y2 = les_coords(n3,1) - les_coords(n1,1);
80 z2 = les_coords(n3,2) - les_coords(n1,2);
82 nx = (y1*z2 - y2*z1)/2;
83 ny = (-x1*z2 + x2*z1)/2;
84 nz = (x1*y2 - x2*y1)/2;
89 elem1=Face_voisins(num_Face,0);
91 if ( (f0 = elem_faces(elem1,0)) == num_Face )
92 f0 = elem_faces(elem1,1);
94 if ( (no4 = Face_sommets(f0,0)) != n0 && no4 != n1
95 && no4 != n2 && no4 != n3)
97 else if ( (no4 = Face_sommets(f0,1)) != n0 && no4 != n1
98 && no4 != n2 && no4 != n3)
100 else if ( (no4 = Face_sommets(f0,2)) != n0 && no4 != n1
101 && no4 != n2 && no4 != n3)
104 no4 = Face_sommets(f0,3);
106 x1 = les_coords(no4,0) - les_coords(n0,0);
107 y1 = les_coords(no4,1) - les_coords(n0,1);
108 z1 = les_coords(no4,2) - les_coords(n0,2);
110 if ( (nx*x1+ny*y1+nz*z1) > 0 )
112 Face_normales(num_Face,0) += -nx;
113 Face_normales(num_Face,1) += -ny;
114 Face_normales(num_Face,2) += -nz;
118 Face_normales(num_Face,0) += nx;
119 Face_normales(num_Face,1) += ny;
120 Face_normales(num_Face,2) += nz;
125 x1 = les_coords(n0,0) - les_coords(n2,0);
126 y1 = les_coords(n0,1) - les_coords(n2,1);
127 z1 = les_coords(n0,2) - les_coords(n2,2);
129 x2 = les_coords(n3,0) - les_coords(n2,0);
130 y2 = les_coords(n3,1) - les_coords(n2,1);
131 z2 = les_coords(n3,2) - les_coords(n2,2);
133 nx = (y1*z2 - y2*z1)/2;
134 ny = (-x1*z2 + x2*z1)/2;
135 nz = (x1*y2 - x2*y1)/2;
140 elem1=Face_voisins(num_Face,0);
142 if ( (f0 = elem_faces(elem1,0)) == num_Face )
143 f0 = elem_faces(elem1,1);
145 if ( (no4 = Face_sommets(f0,0)) != n0 && no4 != n1
146 && no4 != n2 && no4 != n3)
148 else if ( (no4 = Face_sommets(f0,1)) != n0 && no4 != n1
149 && no4 != n2 && no4 != n3)
151 else if ( (no4 = Face_sommets(f0,2)) != n0 && no4 != n1
152 && no4 != n2 && no4 != n3)
155 no4 = Face_sommets(f0,3);
157 x1 = les_coords(no4,0) - les_coords(n0,0);
158 y1 = les_coords(no4,1) - les_coords(n0,1);
159 z1 = les_coords(no4,2) - les_coords(n0,2);
161 if ( (nx*x1+ny*y1+nz*z1) > 0 )
163 Face_normales(num_Face,0) += -nx;
164 Face_normales(num_Face,1) += -ny;
165 Face_normales(num_Face,2) += -nz;
169 Face_normales(num_Face,0) += nx;
170 Face_normales(num_Face,1) += ny;
171 Face_normales(num_Face,2) += nz;