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

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

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

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

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

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

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

#
# kihon3.rb

require "narray"
require "numru/advanceddcl"

include NumRu::AdvancedDCL
include Math

nmax = 40
imax = 7
dt = 4.0*PI/nmax

x = NArray.sfloat(nmax+1)
y = NArray.sfloat(nmax+1, imax)

#-- data ----
x = x.indgen * 1.0/nmax
for n in 0..nmax
  for i in 0..imax-1
    y[n,i] = 0.2*sin(n*dt) + 0.8 - 0.1*i
  end
end

#-- graph ----
Dev.open

#-- marker type : frame 1 --
Frame.new
Frame.pvpr(1) 

Mark.vdraw(x, y[true,0])

for i in 1..imax-1
  itype = i + 1
  Mark.marktype=itype
  Mark.vdraw(x, y[true,i])
end

#-- marker size : frame 2 --
Frame.new
Frame.pvpr(1) 

Mark.marktype=10
Mark.vdraw(x, y[true,0])

for i in 1..imax-1
  rsize = 0.005*i
  Mark.marksize=rsize
  Mark.vdraw(x, y[true,i])
end

Dev.close
PROGRAM KIHON3