Download in2dan.eso

Back to the list

   1 : C IN2DAN    SOURCE    PV        07/10/05    21:16:01     5890           
   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 : -INC CCOPTIO
  11 : -INC TDEMAIT
  12 :       in2dan = .false.
  13 : *  calcul du point d'intersection :
  14 :       xp=(pm2*xyz(1,ip1)-pm1*xyz(1,ip2))/(pm2-pm1)
  15 :       yp=(pm2*xyz(2,ip1)-pm1*xyz(2,ip2))/(pm2-pm1)
  16 :       zp=(pm2*xyz(3,ip1)-pm1*xyz(3,ip2))/(pm2-pm1)
  17 : *     write (6,*) ' in2dan pt inter ',xp,yp,zp
  18 : *     write (6,*) ' in2dan i1 ',xyz(1,i1),xyz(2,i1),xyz(3,i1)
  19 : *     write (6,*) ' in2dan i2 ',xyz(1,i2),xyz(2,i2),xyz(3,i2)
  20 : *     write (6,*) ' in2dan i3 ',xyz(1,i3),xyz(2,i3),xyz(3,i3)
  21 : *  calcul des produits scalaires par rapport au trois cotes
  22 :       xv1=xyz(1,i1)-xp
  23 :       yv1=xyz(2,i1)-yp
  24 :       zv1=xyz(3,i1)-zp
  25 :       xv2=xyz(1,i2)-xp
  26 :       yv2=xyz(2,i2)-yp
  27 :       zv2=xyz(3,i2)-zp
  28 :       xv3=xyz(1,i3)-xp
  29 :       yv3=xyz(2,i3)-yp
  30 :       zv3=xyz(3,i3)-zp
  31 : *  vecteur normal
  32 :       xn=(yv2-yv1)*(zv3-zv2)-(zv2-zv1)*(yv3-yv2)
  33 :       yn=(zv2-zv1)*(xv3-xv2)-(xv2-xv1)*(zv3-zv2)
  34 :       zn=(xv2-xv1)*(yv3-yv2)-(yv2-yv1)*(xv3-xv2)
  35 : *     write (6,*) ' in2dan vct norm ',xn,yn,zn
  36 : *  produits mixtes
  37 :       sc1=xn*(yv2*zv3-yv3*zv2)+yn*(zv2*xv3-zv3*xv2)+zn*(xv2*yv3-xv3*yv2)
  38 :       sc2=xn*(yv3*zv1-yv1*zv3)+yn*(zv3*xv1-zv1*xv3)+zn*(xv3*yv1-xv1*yv3)
  39 :       sc3=xn*(yv1*zv2-yv2*zv1)+yn*(zv1*xv2-zv2*xv1)+zn*(xv1*yv2-xv2*yv1)
  40 : *  tests
  41 : *      if (sc1*sc2.gt.1e-30.and.sc2*sc3.gt.1e-30)  then
  42 :       if (sc1*sc2.gt.1e-30.and.sc2*sc3.gt.xpetit)  then
  43 : *      write (6,*) 'in2dan rate'
  44 :        in2dan = .true.
  45 :       endif
  46 :       return
  47 :       end
  48 :  
  49 :  
  50 :  
  51 :  

© Cast3M 2003 - All rights reserved.
Disclaimer