dyne30
C DYNE30 SOURCE CHAT 05/01/12 23:17:07 5004 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) *--------------------------------------------------------------------* * * * Op{rateur DYNE : algorithme de Fu - de Vogelaere * * ________________________________________________ * * * * Position initiale du profil mobile par rapport au 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 ID7 = ID1 + 5*IDIM + IDIM*NOMBN1 ID8 = ID7 + IDIM*NOMBN2 NUM1 = ID7 IEL2 = IP1 + NOMBN1 DO 10 IN = 1,NOMBN2 * calcul des coordonn{es dans le plan d{fini par les profils X1 = ZERO Y1 = ZERO DO 12 ID = 1,IDIM XX = XPALB(I,NUM1+ID) - XPALB(I,ID2+ID) X1 = X1 + ( XX * XPALB(I,ID3+ID) ) Y1 = Y1 + ( XX * XPALB(I,ID4+ID) ) 12 CONTINUE * end do NUM2 = ID8 DO 14 IE = 1,NOMBN1 ITYP = IPALB(I,IP1+IE) XAIJ = XPALB(I,NUM2+1) XBIJ = XPALB(I,NUM2+2) IF (ITYP.EQ.1) THEN * La droite est verticale IF (X1.GT.XAIJ) THEN IPALB(I,IEL2+IE) = 1 ELSE IF (X1.LT.XAIJ) THEN IPALB(I,IEL2+IE) = -1 ELSE IPALB(I,IEL2+IE) = 0 ENDIF ELSE IF (ITYP.EQ.2) THEN * La droite est horizontale IF (Y1.GT.XBIJ) THEN IPALB(I,IEL2+IE) = 1 ELSE IF (Y1.LT.XBIJ) THEN IPALB(I,IEL2+IE) = -1 ELSE IPALB(I,IEL2+IE) = 0 ENDIF ELSE * La droite est quelconque RES = ( XAIJ * X1 ) + XBIJ IF (Y1.GT.RES) THEN IPALB(I,IEL2+IE) = 1 ELSE IF (Y1.LT.RES) THEN IPALB(I,IEL2+IE) = -1 ELSE IPALB(I,IEL2+IE) = 0 ENDIF ENDIF NUM2 = NUM2 + 2 14 CONTINUE * end do IEL2 = IEL2 + NOMBN1 NUM1 = NUM1 + IDIM 10 CONTINUE * end do * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales