2 c 2.3.4. ==> face f1 : plan (s1,s2,s5)
3 c prmito est le produit mixte de la pyramide totale.
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,s5) 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,.) represente le produit vectoriel s5s2 x s5s1.
37 v0(1,1) = v52(2)*v51(3) - v52(3)*v51(2)
38 v0(1,2) = v52(3)*v51(1) - v52(1)*v51(3)
39 v0(1,3) = v52(1)*v51(2) - v52(2)*v51(1)
41 c prmito est le produit mixte (s5s2,s5s1,s5s4)
43 prmito = v0(1,1)*v54(1)
49 write (ulsort,*) '.... v52', v52(1),v52(2),v52(3)
50 write (ulsort,*) '.... v51', v51(1),v51(2),v51(3)
51 write (ulsort,*) '.... v54', v54(1),v54(2),v54(3)
52 write (ulsort,*) '.... v0(1,.)', v0(1,1),v0(1,2),v0(1,3)
53 write (ulsort,*) '.... ==> prmito =', prmito
57 c si le produit mixte est nul, c'est que le volume est nul
58 c on ne controle donc rien
60 if ( prmito.le.daux1 ) then
72 c prmilo est le produit mixte (s5s2,s5s1,s5sn)
74 prmilo = v0(1,1)*v5n(1)
79 c write (ulsort,*) '.... v5n =',v5n
80 write (ulsort,*) '.... f1 prmilo =', prmilo
85 if ( prmito*prmilo.lt.daux1 ) then
91 c 2.3.4. ==> idem pour la face f2 : plan (s2,s3,s5)
102 c v0(2,.) est le produit vectoriel s5s3 x s5s2
104 v0(2,1) = v53(2)*v52(3) - v53(3)*v52(2)
105 v0(2,2) = v53(3)*v52(1) - v53(1)*v52(3)
106 v0(2,3) = v53(1)*v52(2) - v53(2)*v52(1)
108 c prmito est le produit mixte (s5s3,s5s2,s5s4)
109 c vu la definition des 5 sommets de la pyramide, c'est la
110 c meme valeur que le produit mixte (s5s2,s5s1,s5s4)
116 c prmilo est le produit mixte (s5s3,s5s2,s5sn)
118 prmilo = v0(2,1)*v5n(1)
121 #ifdef _DEBUG_HOMARD_
122 if ( glop.ne.0 ) then
123 write (ulsort,*) '.... f2 prmilo =', prmilo
128 if ( prmito*prmilo.lt.daux1 ) then
134 c 2.3.5. ==> idem pour la face f3 : plan (s3,s4,s5)
137 if ( logaux(7) ) then
139 if ( logaux(3) ) then
141 c v0(3,.) est le produit vectoriel s5s4 x s5s3
143 v0(3,1) = v54(2)*v53(3) - v54(3)*v53(2)
144 v0(3,2) = v54(3)*v53(1) - v54(1)*v53(3)
145 v0(3,3) = v54(1)*v53(2) - v54(2)*v53(1)
147 c prmito est le produit mixte (s5s3,s5s2,s5s4)
154 c prmilo est le produit mixte (s5s4,s5s3,s5sn)
156 prmilo = v0(3,1)*v5n(1)
159 #ifdef _DEBUG_HOMARD_
160 if ( glop.ne.0 ) then
161 write (ulsort,*) '.... f3 prmilo =', prmilo
166 if ( prmito*prmilo.lt.daux1 ) then
172 c 2.3.6. ==> idem pour la face f4 : plan (s1,s4,s5)
175 if ( logaux(7) ) then
177 if ( logaux(4) ) then
179 c v0(4,.) est le produit vectoriel s5s1 x s5s4
181 v0(4,1) = v51(2)*v54(3) - v51(3)*v54(2)
182 v0(4,2) = v51(3)*v54(1) - v51(1)*v54(3)
183 v0(4,3) = v51(1)*v54(2) - v51(2)*v54(1)
185 c prmito est le produit mixte (s5s2,s5s1,s5s4)
192 c prmilo est le produit mixte (s5s1,s5s4,s5sn)
194 prmilo = v0(4,1)*v5n(1)
197 #ifdef _DEBUG_HOMARD_
198 if ( glop.ne.0 ) then
199 write (ulsort,*) '.... f4 prmilo =', prmilo
204 if ( prmito*prmilo.lt.daux1 ) then
210 c 2.3.7. ==> idem pour la face f5 : plan (s1,s2,s3,s4)
213 if ( logaux(7) ) then
215 if ( logaux(5) ) then
225 c v0(5,.) est le produit vectoriel s1s2 x s1s4
227 v0(5,1) = v12(2)*v14(3) - v12(3)*v14(2)
228 v0(5,2) = v12(3)*v14(1) - v12(1)*v14(3)
229 v0(5,3) = v12(1)*v14(2) - v12(2)*v14(1)
231 c prmito est le produit mixte (s1s2,s1s4,s1s5)
232 c vu la definition des 5 sommets de la pyramide, c'est la
233 c meme valeur que le produit mixte (s5s2,s5s1,s5s4)
239 c prmilo est le produit mixte (s1s2,s1s4,s1sn)
241 prmilo = v0(5,1)*(vn(1)-v1(1))
242 > + v0(5,2)*(vn(2)-v1(2))
243 > + v0(5,3)*(vn(3)-v1(3))
244 #ifdef _DEBUG_HOMARD_
245 if ( glop.ne.0 ) then
246 c write (ulsort,*) '.... vn-v1 =',(vn(iaux)-v1(iaux),iaux=1,3)
247 write (ulsort,*) '.... f5 prmilo =', prmilo
252 if ( prmito*prmilo.lt.daux1 ) then