kam1m2
C KAM1M2 SOURCE CB215821 19/03/20 21:15:08 10165 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C---------------------------------------------------------------------- C SP appele par KAINTE C calcul du point d intersection du segment obstructeur AB C (RA,ZA) (RB,ZB) C et du segment M1M2 (R1,Z1) (R2,Z2) C resultat: C R Z coordonnees du point C KM=1 si le point appartient au segment M1M2 C si oui KA=1 si le point appartient au segment AB C---------------------------------------------------------------------- C 11/2010: on augmente la précision du calcul insuffisante si dr/r tres faible C C Pour avoir XZPREC et XPETIT -INC CCREEL EMIN1=-XZPREC KM = 0 KA = 0 C CB215821 initialisation sinon plantage !!! R=1.D0 Z=1.D0 U1=Z1-Z2 U2=R2-R1 V1=ZA-ZB V2=RB-RA U1V2=U1*V2 U2V1=U2*V1 PS=U1V2-U2V1 XTEST=MAX(XZPREC*(MAX(ABS(U1V2),ABS(U2V1))),XPETIT) IF(ABS(PS).GT.XTEST) THEN R =(U1V2*R1-U2V1*RA+ U2*V2*(Z1-ZA) )/PS Z =(U1V2*ZA-U2V1*Z1- U1*V1*(R1-RA) )/PS PS=(R-R1)*(R-R2)+(Z-Z1)*(Z-Z2) IF(PS.LT.EMIN1) THEN KM=1 PA=(R-RA)*(R-RB)+(Z-ZA)*(Z-ZB) IF(PA.LT.EMIN1) KA=1 ENDIF ENDIF END
© Cast3M 2003 - Tous droits réservés.
Mentions légales