3.3 ポリマーカープリミティブ

マーカー列を描くポリマーカープリミティブには, 次の3つの属性があります.

プログラム KIHON3 は, マーカータイプとマーカーサイズの属性を変え て描く例です.

まず最初のフレームですが, 第3.1節で見たように, 単に SGPMV ルーチンを呼ぶと初期値である・のマーカー列が描かれます. 28行め の SGSPMT ルーチンでマーカータイプを2から7まで変えると, +, *, 。 と順に異なるマーカー列が上から下へと描かれていきます. 巻末付録のフォントテーブルにあるマーク・記号・文字などには, それぞれ DCL文字番号が与えられていますが, ここでは SGSPMT で与えるDCL文字 番号に対応するマーカー列が描かれているのです. たとえばITYPE=152 のとき, α のマーカー列を描きます.

次のフレームではマーカーの大きさを変えています. 初期値はV-座標系におけ る単位で 0.01 です. 2番めからは, SGSPMS ルーチンで大きさを 0.005, 0.01, 0.015, …, 0.03 と変えた結果です. 塗りつぶしたような マーカーもどんどん大きくしていくと, いくつかの線分で構成されていること が見えてきます. このような時には, SGSPMI ルーチンで描くマーカー のラインインデクスを大きくしておくと, 線が太くなって塗りつぶした雰囲気 が出てきます.

\resizebox{10cm}{!}{\includegraphics{kihon1/kihon3_001.eps}}
kihon3.f: frame1

\resizebox{10cm}{!}{\includegraphics{kihon1/kihon3_002.eps}}
kihon3.f: frame2

      PROGRAM KIHON3

      PARAMETER( NMAX=40, IMAX=7 )
      REAL X(0:NMAX), Y(0:NMAX,IMAX)

      DT = 4.* 3.14159 / NMAX
      DO 20 N=0,NMAX
        X(N) = REAL(N)/REAL(NMAX)
        DO 10 I=1,IMAX
          Y(N,I) = 0.2*SIN(N*DT) + 0.9 - 0.1*I
   10   CONTINUE
   20 CONTINUE

      WRITE(*,*) ' WORKSTATION ID (I)  ? ;'
      CALL SGPWSN
      READ (*,*) IWS

      CALL SGOPN( IWS )

*-- マーカータイプ: frame 1 --
      CALL SGFRM
      CALL SLPVPR( 1 )

      CALL SGPMV( NMAX+1, X, Y(0,1) )

      DO 30 I=2,IMAX
        ITYPE = I
        CALL SGSPMT( ITYPE )
        CALL SGPMV( NMAX+1, X, Y(0,I) )
   30 CONTINUE

*-- マーカーサイズ: frame 2 --
      CALL SGFRM
      CALL SLPVPR( 1 )

      CALL SGSPMT( 10 )
      CALL SGPMV( NMAX+1, X, Y(0,1) )

      DO 40 I=2,IMAX
        RSIZE = 0.005*(I-1)
        CALL SGSPMS( RSIZE )
        CALL SGPMV( NMAX+1, X, Y(0,I) )
   40 CONTINUE

      CALL SGCLS

      END

PROGRAM KIHON3