Télécharger droit.eso

Retour à la liste

Numérotation des lignes :

  1. C DROIT SOURCE JC220346 16/11/29 21:15:13 9221
  2. C---------------------------------------------------------------------|
  3. C |
  4. LOGICAL FUNCTION DROIT(I1,I2,I3)
  5. C |
  6. C CETTE FONCTION DETECTE L'ANGLE ENTRE LE SEGMENT ›I1,I2! |
  7. C ET LE SEGMENT ›I2,I3! |
  8. C DROIT EST VRAIE SI L'ANGLE EST CORRECT |
  9. C DROIT EST FAUSSE SI L'ANGLE EST INCORRECT |
  10. C |
  11. C---------------------------------------------------------------------|
  12. C
  13. C
  14. IMPLICIT INTEGER(I-N)
  15. IMPLICIT REAL*8(A-H,O-Z)
  16.  
  17. -INC PPARAM
  18. -INC CCOPTIO
  19. -INC TDEMAIT
  20. DIMENSION V1(3),V2(3)
  21. DO 100 I=1,3
  22. V1(I)=XYZ(I,I1)-XYZ(I,I2)
  23. V2(I)=XYZ(I,I3)-XYZ(I,I2)
  24. 100 CONTINUE
  25. C
  26. V1NORM=SQRT(V1(1)**2+V1(2)**2+V1(3)**2)
  27. V2NORM=SQRT(V2(1)**2+V2(2)**2+V2(3)**2)
  28. C
  29. DO 110 I=1,3
  30. V1(I)=V1(I)/V1NORM
  31. V2(I)=V2(I)/V2NORM
  32. 110 CONTINUE
  33. C
  34. C
  35. SCAL=V1(1)*V2(1)+V1(2)*V2(2)+V1(3)*V2(3)
  36. C
  37. DROIT=.TRUE.
  38. IF (SCAL.GT.0.99999d0) DROIT=.FALSE.
  39. IF (-SCAL.GT.0.99999d0) DROIT=.FALSE.
  40. * IF (SCAL.GT.0.99d°) DROIT=.FALSE.
  41. * IF (-SCAL.GT.0.99d0) DROIT=.FALSE.
  42. C
  43. IF (IVERB.EQ.1) THEN
  44. IF (SCAL.GT.0.99999d0) WRITE(6,1000)I1,I2,I3
  45. IF (SCAL.LT.-0.99999d0) WRITE(6,1001)I1,I2,I3
  46. 1000 FORMAT(' DROIT LE SEGMENT',3I3,' EST TROP FERME |')
  47. 1001 FORMAT(' DROIT LE SEGMENT',3I3,' EST TROP PLAT |')
  48. ENDIF
  49. C
  50. RETURN
  51. END
  52.  
  53.  
  54.  
  55.  
  56.  

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