2 c 2.3.4. ==> face f1 : plan (s1,s2,s3)
3 c prmito est le produit mixte du triedre base sur s1
4 c prmilo est le produit mixte pointant sur le noeud a tester.
5 c il faut que prmito et prmilo soient de meme signe pour que
6 c le noeud soit du meme cote du plan (s1,s2,s3) que s4.
7 c on teste le caractere strictement positif du produit
8 c prmito x prmilo, pour pouvoir pieger les cas ou le
9 c noeud est sur une face.
15 write (ulsort,*) '.... ', mess14(langue,2,-1), lenoeu
35 c v0(1,.) est le produit vectoriel s1s2 x s1s3.
37 v0(1,1) = v12(2)*v13(3) - v12(3)*v13(2)
38 v0(1,2) = v12(3)*v13(1) - v12(1)*v13(3)
39 v0(1,3) = v12(1)*v13(2) - v12(2)*v13(1)
41 c prmito est le produit mixte (s1s2,s1s3,s1s4)
43 prmito = v0(1,1)*v14(1)
49 write (ulsort,*) '.... v12', v12(1),v12(2),v12(3)
50 write (ulsort,*) '.... v14', v14(1),v14(2),v14(3)
51 write (ulsort,*) '.... v13', v13(1),v13(2),v13(3)
52 write (ulsort,*) '.... v0(1,.)', v0(1,1),v0(1,2),v0(1,3)
53 write (ulsort,*) '.... ==> prmito =', prmito
56 c si le produit mixte est nul, c'est que le volume est nul
57 c on ne controle donc rien
59 if ( prmito.le.daux1 ) then
67 c prmilo est le produit mixte (s1s2,s1s3,s1sn)
69 prmilo = v0(1,1)*(vn(1)-v1(1))
70 > + v0(1,2)*(vn(2)-v1(2))
71 > + v0(1,3)*(vn(3)-v1(3))
74 c write (ulsort,*) '.... vn-v1 =',(vn(iaux)-v1(iaux),iaux=1,3)
75 write (ulsort,*) '.... f1 prmilo =', prmilo
80 if ( prmito*prmilo.lt.daux1 ) then
86 c 2.3.5. ==> idem pour la face f2 : plan (s4,s5,s6)
101 c v0(2,.) est le produit vectoriel s5s4 x s5s6
103 v0(2,1) = v54(2)*v56(3) - v54(3)*v56(2)
104 v0(2,2) = v54(3)*v56(1) - v54(1)*v56(3)
105 v0(2,3) = v54(1)*v56(2) - v54(2)*v56(1)
107 c prmito a ete calcule comme le produit mixte (s1s2,s1s3,s1s4)
108 c vu la definition des 6 sommets du pentaedre, c'est la
109 c meme valeur que le produit mixte (s5s4,s5s6,s5s2)
115 c prmilo est le produit mixte (s5s4,s5s6,s5sn)
117 prmilo = v0(2,1)*(vn(1)-v5(1))
118 > + v0(2,2)*(vn(2)-v5(2))
119 > + v0(2,3)*(vn(3)-v5(3))
120 #ifdef _DEBUG_HOMARD_
121 if ( glop.ne.0 ) then
122 c write (ulsort,*) '.... vn-v5 =',(vn(iaux)-v5(iaux),iaux=1,3)
123 write (ulsort,*) '.... f2 prmilo =', prmilo
128 if ( prmito*prmilo.lt.daux1 ) then
134 c 2.3.6. ==> idem pour la face f3 : plan (s1,s3,s6,s4)
137 if ( logaux(7) ) then
139 if ( logaux(3) ) then
141 c v0(3,.) est le produit vectoriel s1s3 x s1s4
143 v0(3,1) = v13(2)*v14(3) - v13(3)*v14(2)
144 v0(3,2) = v13(3)*v14(1) - v13(1)*v14(3)
145 v0(3,3) = v13(1)*v14(2) - v13(2)*v14(1)
147 c prmito est le produit mixte (s1s2,s1s3,s1s4)
154 c prmilo est le produit mixte (s1s3,s1s4,s1sn)
156 prmilo = v0(3,1)*(vn(1)-v1(1))
157 > + v0(3,2)*(vn(2)-v1(2))
158 > + v0(3,3)*(vn(3)-v1(3))
159 #ifdef _DEBUG_HOMARD_
160 if ( glop.ne.0 ) then
161 c write (ulsort,*) '.... vn-v1 =',(vn(iaux)-v1(iaux),iaux=1,3)
162 write (ulsort,*) '.... f3 prmilo =', prmilo
167 if ( prmito*prmilo.lt.daux1 ) then
173 c 2.3.7. ==> idem pour la face f4 : plan (s1,s2,s5,s4)
176 if ( logaux(7) ) then
178 if ( logaux(4) ) then
180 c v0(4,.) est le produit vectoriel s1s4 x s1s2
182 v0(4,1) = v14(2)*v12(3) - v14(3)*v12(2)
183 v0(4,2) = v14(3)*v12(1) - v14(1)*v12(3)
184 v0(4,3) = v14(1)*v12(2) - v14(2)*v12(1)
186 c prmito est le produit mixte (s1s2,s1s3,s1s4)
193 c prmilo est le produit mixte (s1s4,s1s2,s1sn)
195 prmilo = v0(4,1)*(vn(1)-v1(1))
196 > + v0(4,2)*(vn(2)-v1(2))
197 > + v0(4,3)*(vn(3)-v1(3))
198 #ifdef _DEBUG_HOMARD_
199 if ( glop.ne.0 ) then
200 c write (ulsort,*) '.... vn-v1 =',(vn(iaux)-v1(iaux),iaux=1,3)
201 write (ulsort,*) '.... f4 prmilo =', prmilo
206 if ( prmito*prmilo.lt.daux1 ) then
212 c 2.3.8. ==> idem pour la face f5 : plan (s2,s3,s6,s5)
215 if ( logaux(7) ) then
217 if ( logaux(5) ) then
223 c v0(5,.) est le produit vectoriel s5s6 x s5s2
225 v0(5,1) = v56(2)*v52(3) - v56(3)*v52(2)
226 v0(5,2) = v56(3)*v52(1) - v56(1)*v52(3)
227 v0(5,3) = v56(1)*v52(2) - v56(2)*v52(1)
229 c prmito est le produit mixte (s1s2,s1s3,s1s4)
230 c vu la definition des 6 sommets du pentaedre, c'est la
231 c meme valeur que le produit mixte (s5s4,s5s6,s5s2)
238 c prmilo est le produit mixte (s5s6,s5s2,s5sn)
240 prmilo = v0(5,1)*(vn(1)-v5(1))
241 > + v0(5,2)*(vn(2)-v5(2))
242 > + v0(5,3)*(vn(3)-v5(3))
243 #ifdef _DEBUG_HOMARD_
244 if ( glop.ne.0 ) then
245 c write (ulsort,*) '.... vn-v5 =',(vn(iaux)-v5(iaux),iaux=1,3)
246 write (ulsort,*) '.... f5 prmilo =', prmilo
251 if ( prmito*prmilo.lt.daux1 ) then