Télécharger int2d.eso

Retour à la liste

Numérotation des lignes :

int2d
  1. C INT2D SOURCE CHAT 05/01/13 00:39:24 5004
  2. SUBROUTINE INT2D (IP1,IP2,IP3,IP4,INTERS,RESULT)
  3. ************************************************************************
  4. *
  5. * I N T 2 D
  6. * -----------
  7. *
  8. * FONCTION:
  9. * ---------
  10. * INTERSECTION DE 2 DROITES DEFINIES CHACUNES PAR DEUX POINTS
  11. * .
  12. *
  13. * MODULES UTILISES:
  14. * -----------------
  15. *
  16. IMPLICIT INTEGER(I-N)
  17.  
  18. -INC PPARAM
  19. -INC CCOPTIO
  20. *
  21. * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN)
  22. * -----------
  23. *
  24. * IP1... (E) POINT 1 DE LA DROITE 1
  25. * IP2... (E) POINT 2 DE LA DROITE 1
  26. * IP3... (E) POINT 1 DE LA DROITE 2
  27. * IP4... (E) POINT 2 DE LA DROITE 2
  28. * INTERS (S) POINT D'INTERSECTION DES DEUX DROITES
  29. * RESULT (S) = 'OK' SI LA RESOLUTION A PU SE FAIRE
  30. * = 'PARALLELE' SI LA RESOLUTION N'A PAS PU SE FAIRE
  31. * = 'NON COPLANAIRE'
  32. *
  33. CHARACTER*(*) RESULT
  34. *
  35. * VARIABLES:
  36. * ----------
  37. *
  38. * X.,Y.,Z. = COORDONNEES DES POINTS DES DROITES
  39. * D. = DENSITES DES POINTS
  40. * PVEC = PRODUIT VECTORIEL P1P2.P3P4
  41. *
  42. * AA ( ) MATRICE 3X2 DU SYSTEME
  43. * B ( ) SECOND MEMBRE DU SYSTEME
  44. * T ( ) MATRICE RESULTAT
  45. *
  46. REAL*8 AA(3,2),B(3),T(2),
  47. & X1,X2,X3,X4,Y1,Y2,Y3,Y4,Z1,Z2,Z3,Z4,
  48. & XI,YI,ZI,D1,D2,D3,D4,D,T1,T2,
  49. & PV1,PV2,PV3,PVEC
  50. LOGICAL RESOLU
  51. *
  52. * REMARQUES:
  53. * ----------
  54. * LES POINTS DONNEES SONT SUPPOSES NON CONFONDUS
  55. *
  56. * AUTEUR, DATE DE CREATION:
  57. * -------------------------
  58. *
  59. * LIONEL VIVAN 19 NOVEMBRE 1987
  60. *
  61. * LANGAGE:
  62. * --------
  63. *
  64. * FORTRAN77
  65. *
  66. ************************************************************************
  67. *
  68. * CALCUL DES COORDONNEES DES POINTS
  69. *
  70. CALL EXCOO1(IP1,X1,Y1,Z1,D1)
  71. CALL EXCOO1(IP2,X2,Y2,Z2,D2)
  72. CALL EXCOO1(IP3,X3,Y3,Z3,D3)
  73. CALL EXCOO1(IP4,X4,Y4,Z4,D4)
  74. *
  75. * DENSITE LOCALE MOYENNE
  76. *
  77. D=((D1+D2+D3+D4)/4.D0)**2.
  78. *
  79. * TEST : DROITES PARALLELES ?
  80. *
  81. PV1=((Y2-Y1)*(Z4-Z3))-((Z2-Z1)*(Y4-Y3))
  82. PV2=((Z2-Z1)*(X4-X3))-((X2-X1)*(Z4-Z3))
  83. PV3=((X2-X1)*(Y4-Y3))-((Y2-Y1)*(X4-X3))
  84. PVEC=SQRT(PV1**2+PV2**2+PV3**2)
  85. IF (PVEC.LT.(D/100.D0)) THEN
  86. RESULT='PARALLELE'
  87. RETURN
  88. END IF
  89. AA(1,1)=X2-X1
  90. AA(1,2)=X3-X4
  91. AA(2,1)=Y2-Y1
  92. AA(2,2)=Y3-Y4
  93. AA(3,1)=Z2-Z1
  94. AA(3,2)=Z3-Z4
  95. B(1)=X3-X1
  96. B(2)=Y3-Y1
  97. B(3)=Z3-Z1
  98. *
  99. * CALCUL DU POINT D'INTERSECTION
  100. *
  101. CALL EQUA32(AA,B,T,RESOLU)
  102. IF (IERR.NE.0) RETURN
  103. IF (.NOT.RESOLU) THEN
  104. RESULT='NON COPLANAIRE'
  105. RETURN
  106. END IF
  107. T1=T(1)
  108. T2=T(2)
  109. XI=X1+T1*(X2-X1)
  110. YI=Y1+T1*(Y2-Y1)
  111. ZI=Z1+T1*(Z2-Z1)
  112. CALL CREPO1(XI,YI,ZI,INTERS)
  113. RESULT='OK'
  114. *
  115. END
  116.  
  117.  
  118.  

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