C EGA1 SOURCE PV 07/11/23 21:16:49 5978 LOGICAL FUNCTION EGA1 (IP1,IP2,EPS1) implicit real*8 (a-h,o-z) ************************************************************************ * * E G A 1 * ------- * * FONCTION: * --------- * * INDIQUER SI 2 POINTS ONT MEME POSITION DANS L'ESPACE, A PEU DE * CHOSES PRES * * MODULES UTILISES: * ----------------- * IMPLICIT INTEGER(I-N) -INC CCGEOME -INC CCOPTIO -INC SMCOORD * * ARGUMENTS: (E)=ENTREE (S)=SORTIE (+ = PASSE PAR COMMUN) * ---------- * * IP1 (E) 1ER POINT. * IP2 (E) 2EME POINT. * EPS1 (E) TOLERANCE POUR ANNONCER "MEME POSITION". * SI NEGATIF, AUCUNE TOLERANCE SPECIFIEE: ON PREND UN * SOUS-MULTIPLE DE LA DENSITE. * (S) TOLERANCE UTILISEE. * +DENSIT (E) VOIR "CGEOME". * +IDIM (E) VOIR "COPTIO". * +MCOORD (E) VOIR "COPTIO". * EGA1 (S) .TRUE. SI LES POINTS SONT A LA MEME POSITION. * .FALSE. SINON. * INTEGER IP1,IP2 * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL MANIGOT 1ER OCTOBRE 1986 * * LANGAGE: * -------- * * ESOPE + FORTRAN77 * ************************************************************************ * REAL*8 EPS1 IF (IP1 .EQ. IP2) THEN EGA1 = .TRUE. RETURN END IF * SEGACT,MCOORD IDIMP1 = IDIM + 1 * IF (EPS1 .LT. 0.) THEN EPS1 = (XCOOR(IP1*IDIMP1) + XCOOR(IP2*IDIMP1)) / 20. IF (EPS1 .LE. 0.) EPS1 = DENSIT /10. END IF * DIST = (XCOOR((IP1-1)*IDIMP1+1) - XCOOR((IP2-1)*IDIMP1+1))**2 & + (XCOOR((IP1-1)*IDIMP1+2) - XCOOR((IP2-1)*IDIMP1+2))**2 IF (IDIM .EQ. 3) THEN DIST = DIST + & (XCOOR((IP1-1)*IDIMP1+3) - XCOOR((IP2-1)*IDIMP1+3))**2 END IF DIST = SQRT(DIST) * EGA1 = DIST.LE.EPS1 * END