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