1 : C DROIT SOURCE PV 07/10/11 21:15:02 5907 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 (SCAL.GT.0.99999d0) WRITE(6,1000)I1,I2,I3 42 : IF (SCAL.LT.-0.99999d0) WRITE(6,1001)I1,I2,I3 43 : 1000 FORMAT(' DROIT LE SEGMENT',3I3,' EST TROP FERME |') 44 : 1001 FORMAT(' DROIT LE SEGMENT',3I3,' EST TROP PLAT |') 45 : C 46 : RETURN 47 : END 48 : 49 : 50 :
© Cast3M 2003 - All rights reserved.
Disclaimer