Download trseg.eso

Back to the list

   1 : C TRSEG     SOURCE    BP208322  12/08/02    21:15:49     7468           
   2 : C
   3 :       SUBROUTINE TRSEG(IPTR1,TX,TY,ZTIRE,KTIR,DL,ZTRAC)
   4 : *=============================================================
   5 : * Modifications :
   6 : *
   7 : *   95/02/07 Loca
   8 : *     passer les legendes x et y de 12 à 20 caractères:
   9 : *     SEGMENT AXE disparait et est appelé en include: -INC TMAXE.
  10 : *
  11 : *   05 sept. 2007 Maugis
  12 : *     Maintien du segment AXE actif en modification
  13 : *
  14 : *=============================================================
  15 : *
  16 : * Entrée :
  17 : *
  18 : *   IPTR1 : POINTEUR SUR UN AXE                        (ACTIF)
  19 : *   TX    : TABLE DE TAILLE 2 CONTENANT LES ABSCISSES 
  20 : *           DES EXTREMITES DU SEGMENT A TRACER
  21 : *   TY    : TABLE DE TAILLE 2 CONTENANT LES ORDONNEES 
  22 : *           DES EXTREMITES DU SEGMENT A TRACER
  23 : *   ZTIRE : INDIQUE SI TRAIT REMPLACE PAR DES TIRETS
  24 : *   KTIR  : Type de tiret (entre 1 et 5)
  25 : *   ZTRAC : indique si le prochain segment doit être tracé 
  26 : *
  27 : *=============================================================
  28 :       IMPLICIT INTEGER(I-N)
  29 :       IMPLICIT REAL*8 (A-H,O-S,U-Y)
  30 :       IMPLICIT LOGICAL (Z)
  31 :       DIMENSION TX(*),TY(*),TXX(2),TYY(2),tz(2)
  32 : -INC TMAXE
  33 : *
  34 :        tz(1)=0
  35 :        tz(2)=0
  36 : 
  37 :        AXE=IPTR1
  38 : *PM    SEGACT AXE
  39 : *
  40 : *     TRACE DES SEGMENTS A L'AIDE DE TIRET
  41 : *
  42 :       IF (ZTIRE) THEN
  43 :          KTIR4 = 0
  44 :          DIST  = (XSUP-XINF)/100
  45 : 
  46 : *        CALCUL NORME D'AXE
  47 :          XNORME=16/(XSUP-XINF)
  48 :          YNORME=11.3/(YSUP-YINF)
  49 :          IF (ZCARRE) THEN
  50 :             XNORME=12/(XSUP-XINF)
  51 :          ENDIF
  52 : *
  53 :          CY=YNORME*YNORME/XNORME/XNORME
  54 : *
  55 : 10       CONTINUE
  56 :          D1 = SQRT((TX(2)-TX(1))**2+(TY(2)-TY(1))**2*CY)
  57 :          IF (KTIR.EQ.1) THEN
  58 :             D =      D1
  59 :          ELSEIF (KTIR.EQ.2) THEN
  60 :             D = 2.D0*D1
  61 :          ELSEIF (KTIR.EQ.3) THEN
  62 :             D =0.5D0*D1
  63 :          ELSEIF (KTIR.EQ.4) THEN
  64 :             D =      D1
  65 :          ELSEIF (KTIR.EQ.5) THEN
  66 :             D = 10.D0*D1
  67 :          ELSE
  67 :             CALL ERREUR(5)
  68 :             RETURN 
  69 :          ENDIF 
  70 : 
  71 :          IF (D.LT.DL) THEN
  71 :             IF (ZTRAC) CALL POLRL(2,TX,TY,tz)
  72 :             DL=DL-D
  73 :          ELSE
  74 :             TXX(1)=TX(1)
  75 :             TYY(1)=TY(1)
  76 :             TXX(2)=TX(1)+(DL/D)*(TX(2)-TX(1))
  77 :             TYY(2)=TY(1)+(DL/D)*(TY(2)-TY(1))
  78 : c          -cas des tirets de longueurs constantes 
  79 :             IF (KTIR.LT.4) THEN
  80 :               IF (ZTRAC) THEN
  80 :                 CALL POLRL (2,TXX,TYY,tz)
  81 :                 ZTRAC=.FALSE.
  82 :               ELSE
  83 :                 ZTRAC=.TRUE.
  84 :               ENDIF
  85 : c          -cas des traits mixtes
  86 :             ELSEIF(KTIR.EQ.4) THEN
  87 :               KTIR4 = KTIR4 + 1
  88 :               IF (KTIR4.EQ.6) KTIR4=1
  88 :               IF (KTIR4.NE.3.AND.KTIR4.NE.5)CALL POLRL (2,TXX,TYY,TZ)
  89 : c          -cas des pointillés 
  90 :             ELSEIF(KTIR.EQ.5) THEN
  91 :               KTIR4 = KTIR4 + 1
  92 :               IF (KTIR4.EQ.6) KTIR4=1
  92 :               IF (KTIR4.EQ.1) CALL POLRL (2,TXX,TYY,TZ)
  93 :             ENDIF
  94 :             TX(1)= TXX(2)
  95 :             TY(1)= TYY(2)
  96 :             DL   = DIST
  97 :             GOTO 10
  98 :          ENDIF
  99 :       ELSE
  99 :          CALL POLRL (2,TX,TY,TZ)
 100 :       ENDIF
 101 : 
 102 : 3     CONTINUE 
 103 : *PM      SEGDES AXE
 104 :       END
 105 : 
 106 : 
 107 : 
 108 :  
 109 :  
 110 :  

© Cast3M 2003 - All rights reserved.
Disclaimer