Télécharger in2dan.eso

Retour à la liste

Numérotation des lignes :

  1. C IN2DAN SOURCE JC220346 16/11/29 21:15:21 9221
  2. LOGICAL FUNCTION IN2DAN(IP1,IP2,I1,I2,I3,PM1,PM2)
  3. *
  4. * verifie si le segment ip1 ip2 passe a l'interieur du triangle
  5. * i1,i2,i3. pm1 et pm2 sont les produits mixes deja calcules
  6. *
  7. IMPLICIT INTEGER(I-N)
  8. IMPLICIT REAL*8(A-H,O-Z)
  9. -INC CCREEL
  10.  
  11. -INC PPARAM
  12. -INC CCOPTIO
  13. -INC TDEMAIT
  14. in2dan = .false.
  15. if (abs(pm2-pm1).lt.xpetit) then
  16. in2dan=.true.
  17. return
  18. endif
  19. * calcul du point d'intersection :
  20. xp=(pm2*xyz(1,ip1)-pm1*xyz(1,ip2))/(pm2-pm1)
  21. yp=(pm2*xyz(2,ip1)-pm1*xyz(2,ip2))/(pm2-pm1)
  22. zp=(pm2*xyz(3,ip1)-pm1*xyz(3,ip2))/(pm2-pm1)
  23. * write (6,*) ' in2dan pt inter ',xp,yp,zp
  24. * write (6,*) ' in2dan i1 ',xyz(1,i1),xyz(2,i1),xyz(3,i1)
  25. * write (6,*) ' in2dan i2 ',xyz(1,i2),xyz(2,i2),xyz(3,i2)
  26. * write (6,*) ' in2dan i3 ',xyz(1,i3),xyz(2,i3),xyz(3,i3)
  27. * calcul des produits scalaires par rapport au trois cotes
  28. xv1=xyz(1,i1)-xp
  29. yv1=xyz(2,i1)-yp
  30. zv1=xyz(3,i1)-zp
  31. xv2=xyz(1,i2)-xp
  32. yv2=xyz(2,i2)-yp
  33. zv2=xyz(3,i2)-zp
  34. xv3=xyz(1,i3)-xp
  35. yv3=xyz(2,i3)-yp
  36. zv3=xyz(3,i3)-zp
  37. * vecteur normal
  38. xn=(yv2-yv1)*(zv3-zv2)-(zv2-zv1)*(yv3-yv2)
  39. yn=(zv2-zv1)*(xv3-xv2)-(xv2-xv1)*(zv3-zv2)
  40. zn=(xv2-xv1)*(yv3-yv2)-(yv2-yv1)*(xv3-xv2)
  41. * write (6,*) ' in2dan vct norm ',xn,yn,zn
  42. * produits mixtes
  43. sc1=xn*(yv2*zv3-yv3*zv2)+yn*(zv2*xv3-zv3*xv2)+zn*(xv2*yv3-xv3*yv2)
  44. sc2=xn*(yv3*zv1-yv1*zv3)+yn*(zv3*xv1-zv1*xv3)+zn*(xv3*yv1-xv1*yv3)
  45. sc3=xn*(yv1*zv2-yv2*zv1)+yn*(zv1*xv2-zv2*xv1)+zn*(xv1*yv2-xv2*yv1)
  46. * tests
  47. * if (sc1*sc2.gt.1e-30.and.sc2*sc3.gt.1e-30) then
  48. if (sc1*sc2.gt.1e-30.and.sc2*sc3.gt.xpetit) then
  49. * write (6,*) 'in2dan rate'
  50. in2dan = .true.
  51. endif
  52. return
  53. end
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales