Download droit.eso

Back to the list

   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