trseg
C TRSEG SOURCE CB215821 22/12/14 12:37:40 11527 C *============================================================= * Modifications : * * 95/02/07 Loca * passer les legendes x et y de 12 à 20 caractères: * SEGMENT AXE disparait et est appelé en include: -INC TMAXE. * * 05 sept. 2007 Maugis * Maintien du segment AXE actif en modification * *============================================================= * * Entrée : * * IPTR1 : POINTEUR SUR UN AXE (ACTIF) * TX : TABLE DE TAILLE 2 CONTENANT LES ABSCISSES * DES EXTREMITES DU SEGMENT A TRACER * TY : TABLE DE TAILLE 2 CONTENANT LES ORDONNEES * DES EXTREMITES DU SEGMENT A TRACER * ZTIRE : INDIQUE SI TRAIT REMPLACE PAR DES TIRETS * KTIR : Type de tiret (entre 1 et 5) * ZTRAC : indique si le prochain segment doit être tracé * *============================================================= IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-S,U-Y) IMPLICIT LOGICAL (Z) DIMENSION TX(*),TY(*),TXX(2),TYY(2),tz(2) -INC TMAXE -INC CCREEL * tz(1)=0 tz(2)=0 AXE=IPTR1 *PM SEGACT AXE * * TRACE DES SEGMENTS A L'AIDE DE TIRET * IF (ZTIRE) THEN KTIR4 = 0 * CALCUL NORME D'AXE XNORME=16./(XSUP-XINF) YNORME=11.3/(YSUP-YINF) IF (ZCARRE) THEN XNORME=12./(XSUP-XINF) ENDIF * C CY=YNORME*YNORME/XNORME/XNORME CY=(MIN(YNORME/XNORME,XGRAND ** 0.5))**2 * 10 CONTINUE D1 = SQRT((TX(2)-TX(1))**2+(TY(2)-TY(1))**2*CY) IF (KTIR.EQ.1) THEN D = D1 ELSEIF (KTIR.EQ.2) THEN D = 2.D0*D1 ELSEIF (KTIR.EQ.3) THEN D =0.5D0*D1 ELSEIF (KTIR.EQ.4) THEN D = D1 ELSEIF (KTIR.EQ.5) THEN D = 10.D0*D1 ELSE RETURN ENDIF IF (D.LT.DL) THEN IF (ZTRAC) CALL POLRL(2,TX,TY,tz) DL=DL-D ELSE TXX(1)=TX(1) TYY(1)=TY(1) TXX(2)=TX(1)+(DL/D)*(TX(2)-TX(1)) TYY(2)=TY(1)+(DL/D)*(TY(2)-TY(1)) c -cas des tirets de longueurs constantes IF (KTIR.LT.4) THEN IF (ZTRAC) THEN CALL POLRL (2,TXX,TYY,tz) ZTRAC=.FALSE. ELSE ZTRAC=.TRUE. ENDIF c -cas des traits mixtes ELSEIF(KTIR.EQ.4) THEN KTIR4 = KTIR4 + 1 IF (KTIR4.EQ.6) KTIR4=1 IF (KTIR4.NE.3.AND.KTIR4.NE.5)CALL POLRL (2,TXX,TYY,TZ) c -cas des pointillés ELSEIF(KTIR.EQ.5) THEN KTIR4 = KTIR4 + 1 IF (KTIR4.EQ.6) KTIR4=1 IF (KTIR4.EQ.1) CALL POLRL (2,TXX,TYY,TZ) ENDIF TX(1)= TXX(2) TY(1)= TYY(2) DL = DIST GOTO 10 ENDIF ELSE CALL POLRL (2,TX,TY,TZ) ENDIF 3 CONTINUE *PM SEGDES AXE END
© Cast3M 2003 - Tous droits réservés.
Mentions légales