disydr
C DISYDR SOURCE CHAT 05/01/12 22:51:52 5004 C----------------------------------------------------------------- C Calcul de la distance minimum d'un ensemble de point C a un point (DISYPT), une droite (DISYDR) ou un plan (DISYPL) C de symetrie C C Entree XE(3,N) Tableau de point C C PT1(3) point (DISYPT), point de la droite (DISYDR) C normale NORMEE au plan (DISYPL) C PT2(3) vecteur directeur NORME de la droite (DISYDR) C D distance a l'origine (DISYPL) C C Sortie XXL2M Carre de la distance minimale C C Appele par: CONNE1 C C PP 22/10/92 C PP 11/01/92 il faut bien sortir le carre pour la symetrie P C----------------------------------------------------------------- IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) DIMENSION XE(3,N),PT1(3),PT2(3) C DO 3 I=1,N A=0.D0 DO 1 J=1,3 A=A+PT2(J)*(XE(J,I)-PT1(J)) 1 CONTINUE B=0.D0 DO 2 J=1,3 B=B+(PT1(J)-XE(J,I)+A*PT2(J))**2 2 CONTINUE IF(I.EQ.1)THEN XXL2M=B ELSE XXL2M=MIN(XXL2M,B) ENDIF 3 CONTINUE RETURN C----------------------------------------------------------------- E N T R Y DISYPT(XE,N, PT1, XXL2M) C DO 5 I=1,N B=0.D0 DO 4 J=1,3 B=B+(XE(J,I)-PT1(J))**2 4 CONTINUE IF(I.EQ.1)THEN XXL2M=B ELSE XXL2M=MIN(XXL2M,B) ENDIF 5 CONTINUE RETURN C----------------------------------------------------------------- E N T R Y DISYPL(XE,N, PT1,D, XXL2M) C DO 7 I=1,N B=D DO 6 J=1,3 B=B+XE(J,I)*PT1(J) 6 CONTINUE B=B*B IF(I.EQ.1)THEN XXL2M=B ELSE XXL2M=MIN(XXL2M,B) ENDIF 7 CONTINUE RETURN C----------------------------------------------------------------- END
© Cast3M 2003 - Tous droits réservés.
Mentions légales