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. -INC CCOPTIO
  17. -INC TDEMAIT
  18. DIMENSION V1(3),V2(3)
  19. DO 100 I=1,3
  20. V1(I)=XYZ(I,I1)-XYZ(I,I2)
  21. V2(I)=XYZ(I,I3)-XYZ(I,I2)
  22. 100 CONTINUE
  23. C
  24. V1NORM=SQRT(V1(1)**2+V1(2)**2+V1(3)**2)
  25. V2NORM=SQRT(V2(1)**2+V2(2)**2+V2(3)**2)
  26. C
  27. DO 110 I=1,3
  28. V1(I)=V1(I)/V1NORM
  29. V2(I)=V2(I)/V2NORM
  30. 110 CONTINUE
  31. C
  32. C
  33. SCAL=V1(1)*V2(1)+V1(2)*V2(2)+V1(3)*V2(3)
  34. C
  35. DROIT=.TRUE.
  36. IF (SCAL.GT.0.99999d0) DROIT=.FALSE.
  37. IF (-SCAL.GT.0.99999d0) DROIT=.FALSE.
  38. * IF (SCAL.GT.0.99d°) DROIT=.FALSE.
  39. * IF (-SCAL.GT.0.99d0) DROIT=.FALSE.
  40. C
  41. IF (IVERB.EQ.1) THEN
  42. IF (SCAL.GT.0.99999d0) WRITE(6,1000)I1,I2,I3
  43. IF (SCAL.LT.-0.99999d0) WRITE(6,1001)I1,I2,I3
  44. 1000 FORMAT(' DROIT LE SEGMENT',3I3,' EST TROP FERME |')
  45. 1001 FORMAT(' DROIT LE SEGMENT',3I3,' EST TROP PLAT |')
  46. ENDIF
  47. C
  48. RETURN
  49. END
  50.  
  51.  
  52.  
  53.  
  54.  

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