3.2 基本概念(2): 折れ線(軌跡図)

次のプログラム STEP1 では, UULIN サブルーチンを用いて4種類 の折れ線を一枚の図に重ね書きしてみましょう. まず, USSPNTルーチン を4回呼んで XY0, Y1, Y2, Y3 のデータ のなかから xy の最大値と最小値を見つけ, 「おまかせ」で正規化変 換を確定して, 座標軸も描きます.

さて, 折れ線の描画ですが, 折れ線には, 線種と線の太さの2つの属性があり ます. UUSLNTUUSLNI のサブルーチンでこれらの属性を変更 でき, UULIN ルーチンで折れ線を描きます. 属性を陽に変更しなければ, それぞれの初期値(デフォルト)がそのまま使われます.

このプログラム例では, まず初期値のまま (X,Y0) の折れ線を描き, 次 に少し線を太くして, 破線で (X,Y1) を, 点線で (X,Y2) を, そ して1点鎖線で (X,Y3) を描いています.

これらは, 個々のルーチンで属性を決めてから UULIN で折れ線を描く, 「根回し型」のルーチン群です. これに対して, ひとつのサブルーチンで属性 も同時に指定して折れ線を描く, 「上意下達型」のルーチン UULINZ も 用意されています. 好みの方を使って下さい.

 

 

\resizebox{10cm}{!}{\includegraphics{step/step1.eps}}


step1.f: frame1

  
      PROGRAM STEP1  
  
      PARAMETER( NMAX=201, IMAX=5 )  
      REAL X(NMAX), Y0(NMAX), Y1(NMAX), Y2(NMAX), Y3(NMAX), A(IMAX)  
  
*- データ --  
      PI = 3.14159  
      DO 10 I=1,IMAX  
        II = 2*I - 1  
        A(I) = (-1)**I *2./(II*PI)  
   10 CONTINUE  
  
      DO 20 N=1,NMAX  
        X(N)  = 1.*(N-1)/(NMAX-1)  
        T     = 2.*PI*X(N)  
        IF(T.LT.PI/2. .OR. T.GE.PI*3./2.) THEN  
          Y0(N) = 0.  
        ELSE  
          Y0(N) = 1.  
        END IF  
        Y1(N) = 0.5 + A(1)*COS(T)   
        Y2(N) = 0.5  
        Y3(N) = 0.5  
        DO 30 I=1,IMAX  
          II = 2*I - 1  
          IF(I .LE. 3) Y2(N) = Y2(N) + A(I)*COS(II*T)  
          Y3(N) = Y3(N) + A(I)*COS(II*T)  
   30   CONTINUE  
   20 CONTINUE  
  
*- グラフ --  
      WRITE(*,*) ' WORKSTATION ID (I)  ? ;'  
      CALL SGPWSN  
      READ (*,*) IWS  
  
      CALL GROPN( IWS )  
      CALL GRFRM  
  
      CALL USSPNT( NMAX, X, Y0 )  
      CALL USSPNT( NMAX, X, Y1 )  
      CALL USSPNT( NMAX, X, Y2 )  
      CALL USSPNT( NMAX, X, Y3 )  
      CALL USPFIT  
      CALL GRSTRF  
  
      CALL USSTTL( 'FREQUENCY', '/DAY', 'RESPONSE', '' )  
      CALL USDAXS  
  
      CALL UULIN( NMAX, X, Y0 )  
  
      CALL UUSLNT( 2 )  
      CALL UUSLNI( 3 )  
      CALL UULIN( NMAX, X, Y1 )  
  
      CALL UUSLNT( 3 )  
      CALL UULIN( NMAX, X, Y2 )  
  
      CALL UUSLNT( 4 )  
      CALL UULIN( NMAX, X, Y3 )  
  
      CALL GRCLS  
   
      END  
PROGRAM STEP1