int2d
C INT2D SOURCE GOUNAND 24/10/09 21:15:05 12031 ************************************************************************ * * I N T 2 D * ----------- * * FONCTION: * --------- * INTERSECTION DE 2 DROITES DEFINIES CHACUNES PAR DEUX POINTS * . * * MODULES UTILISES: * ----------------- * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) * -INC PPARAM -INC CCOPTIO -INC CCREEL * * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) * ----------- * * IP1... (E) POINT 1 DE LA DROITE 1 * IP2... (E) POINT 2 DE LA DROITE 1 * IP3... (E) POINT 1 DE LA DROITE 2 * IP4... (E) POINT 2 DE LA DROITE 2 * INTERS (S) POINT D'INTERSECTION DES DEUX DROITES * RESULT (S) = 'OK' SI LA RESOLUTION A PU SE FAIRE * = 'PARALLELE' SI LA RESOLUTION N'A PAS PU SE FAIRE * = 'NON COPLANAIRE' * CHARACTER*(*) RESULT * * VARIABLES: * ---------- * * X.,Y.,Z. = COORDONNEES DES POINTS DES DROITES * D. = DENSITES DES POINTS * PVEC = PRODUIT VECTORIEL P1P2.P3P4 * * AA ( ) MATRICE 3X2 DU SYSTEME * B ( ) SECOND MEMBRE DU SYSTEME * T ( ) MATRICE RESULTAT * REAL*8 AA(3,2),B(3),T(2), & X1,X2,X3,X4,Y1,Y2,Y3,Y4,Z1,Z2,Z3,Z4, & PV1,PV2,PV3,PVEC LOGICAL RESOLU * * REMARQUES: * ---------- * LES POINTS DONNEES SONT SUPPOSES NON CONFONDUS * * AUTEUR, DATE DE CREATION: * ------------------------- * * LIONEL VIVAN 19 NOVEMBRE 1987 * * LANGAGE: * -------- * * FORTRAN77 * ************************************************************************ * XTPARA=SQRT(XZPREC)*100.D0 * * CALCUL DES COORDONNEES DES POINTS * * AA(1,1)=X2-X1 AA(1,2)=X3-X4 AA(2,1)=Y2-Y1 AA(2,2)=Y3-Y4 AA(3,1)=Z2-Z1 AA(3,2)=Z3-Z4 * B(1)=X3-X1 B(2)=Y3-Y1 B(3)=Z3-Z1 * XNAAB=0.D0 DO J=1,2 DO I=1,3 XNAAB=MAX(XNAAB,ABS(AA(I,J))) ENDDO ENDDO DO I=1,3 XNAAB=MAX(XNAAB,ABS(B(I))) ENDDO * * TEST : DROITES PARALLELES ? * PV1=((Y2-Y1)*(Z4-Z3))-((Z2-Z1)*(Y4-Y3)) PV2=((Z2-Z1)*(X4-X3))-((X2-X1)*(Z4-Z3)) PV3=((X2-X1)*(Y4-Y3))-((Y2-Y1)*(X4-X3)) PVEC=SQRT(PV1**2+PV2**2+PV3**2) IF (PVEC.LT.(XNAAB*XTPARA)) THEN RESULT='PARALLELE' RETURN END IF * * CALCUL DU POINT D'INTERSECTION * IF (IERR.NE.0) RETURN IF (.NOT.RESOLU) THEN RESULT='NON COPLANAIRE' RETURN END IF RESULT='OK' * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales