C KAM1M2 SOURCE NC 10/12/02 21:15:00 6803 SUBROUTINE KAM1M2(R1,Z1,R2,Z2,RA,ZA,RB,ZB,R,Z,KM,KA) 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 EMIN=1.D-5 C EMIN1=-1.D-5 C C 11/2010: on augmente la précision du calcul insuffisante si dr/r tres faible C EMIN=1.D-10 EMIN1=-1.D-10 KM=0 KA=0 U1=Z1-Z2 U2=R2-R1 V1=ZA-ZB V2=RB-RA PS=U1*V2-U2*V1 IF(DABS(PS).GE.EMIN) THEN R=(U1*V2*R1-U2*V1*RA+ U2*V2*(Z1-ZA) )/PS Z=(U1*V2*ZA-U2*V1*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 RETURN END