dyne29
C DYNE29 SOURCE CHAT 05/01/12 23:16:54 5004 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Op{rateur DYNE : algorithme de Fu - de Vogelaere * * ________________________________________________ * * * * Coefficient des droites form{es par les {l{ments du profil * * fixe. * * * * Param}tres: * * * * es IPALB tableau de description des liaisons sur base B * * es XPALB tableau de description des liaisons sur base B * * e NLIAB nombre total de liaisons sur base B * * e NOMBN1 nombre de points du profil fixe * * e NOMBN2 nombre de points du profil mobile * * e I num{ro de liaison trait{e * * e ID1 indice de tableau pour XPALB * * e IP1 indice de tableau pour IPALB * * * * * * Auteur, date de cr{ation: * * * * Lionel VIVAN, le 1 f{vrier 1991. * * * *--------------------------------------------------------------------* -INC PPARAM -INC CCOPTIO * INTEGER IPALB(NLIAB,*) REAL*8 XPALB(NLIAB,*) * ID2 = ID1 + IDIM ID3 = ID1 + 2*IDIM ID4 = ID1 + 3*IDIM ID6 = ID1 + 5*IDIM ID8 = ID1 + 5*IDIM + IDIM*NOMBN1 + IDIM*NOMBN2 NUM1 = ID6 NUM2 = ID6 + IDIM DO 10 IE = 1,NOMBN1 IF (IE.EQ.NOMBN1) THEN NUM2 = ID6 ENDIF * calcul des coordonn{es dans le plan d{fini par les profils X1 = ZERO Y1 = ZERO X2 = ZERO Y2 = ZERO DO 12 ID = 1,IDIM XX = XPALB(I,NUM1+ID) - XPALB(I,ID2+ID) YY = XPALB(I,NUM2+ID) - XPALB(I,ID2+ID) X1 = X1 + ( XX * XPALB(I,ID3+ID) ) Y1 = Y1 + ( XX * XPALB(I,ID4+ID) ) X2 = X2 + ( YY * XPALB(I,ID3+ID) ) Y2 = Y2 + ( YY * XPALB(I,ID4+ID) ) 12 CONTINUE * end do XXX = X2 - X1 YYY = Y2 - Y1 IF (ABS(XXX).LT.PRECIS) THEN * la droite est verticale IPALB(I,IP1+IE) = 1 XPALB(I,ID8+1) = X1 ELSE IF (ABS(YYY).LT.PRECIS) THEN * la droite est horizontale IPALB(I,IP1+IE) = 2 XPALB(I,ID8+2) = Y1 ELSE * la droite est quelconque IPALB(I,IP1+IE) = 3 XPALB(I,ID8+1) = YYY / XXX XPALB(I,ID8+2) = ( X2*Y1 - X1*Y2 ) / XXX ENDIF NUM1 = NUM2 NUM2 = NUM2 + IDIM ID8 = ID8 + 2 10 CONTINUE * end do * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales