Download int2d.eso

Back to the list

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

© Cast3M 2003 - All rights reserved.
Disclaimer