3.1.3 正規化変換の変換関数

変換関数を変えることによってさまざまな座標系での描画が可能です. SGPACK で扱える座標系には, 大別して, 直交直線座標系(1〜4), 直交曲線座標系 (5〜7), 地図投影座標系(10番台〜30番台), ユーザー定義座標系 (99), の4種類があります. 括弧内の数字は変換関数番号です. KIHON8 のプログラム例では, よく使う直交直線座標系の4つを見ておきましょう.

サブルーチン bplot では, ビューポートの枠を描き, 一次関数を実線 で, 指数関数を破線で, 対数関数を点線で描き, (X=30,Y=40) を中心に Text.draw で文字列 '(30,40)' を描きます. Fig.transnum= ルーチン で変換関数番号を1と指定すると,直角一様座標(左上)となります. 2ならばy軸が対数の片対数座標(右上), 3ならばx軸が対数の片対数座標(左下), 4な らば両対数座標(右下)となります.

\resizebox{10cm}{!}{\includegraphics{kihon2/kihon8.eps}}
kihon8.rb: frame1

    #
# kihon8.rb

require "narray"
require "numru/advanceddcl"
include NumRu::AdvancedDCL
include NMath


xmin = 1.0
xmax = 100.0
ymin = 1.0
ymax = 100.0

def bplot

  nmax = 50
  x = NArray.sfloat(nmax)
  y = NArray.sfloat(nmax)

#-- 一次関数 ----
  x.indgen(2.0, 2.0)
  y = x

  Plot.draw(x, y)

#-- 指数関数 ----
  y = exp(0.05*x)

  Plot.draw(x, y, "linetype"=>2)

#-- 対数関数 ----
  y = 20.0 * log(x)

  Plot.draw(x, y, "linetype"=>3)

#-- 文字列 ----
  Text.draw(30.0, 40.0, '(30,40)', "charsize"=>0.02)

  Frame.pvpr(1)
end


#-- graph ---
Dev.open

Fig.lclip=true

Frame.new
#-- 直角一様座標(左上) ----
Fig.window=[xmin, xmax, ymin, ymax]
Fig.viewport=[0.1, 0.4, 0.6, 0.9]
Fig.transnum=1

bplot

#-- 片対数(y)座標(右上) ----
Fig.viewport=[0.6, 0.9, 0.6, 0.9]
Fig.transnum=2

bplot

#-- 片対数(x)座標(左下) ----
Fig.viewport=[0.1, 0.4, 0.1, 0.4]
Fig.transnum=3

bplot
      
#-- 対数座標(右下) ----
Fig.viewport=[0.6, 0.9, 0.1, 0.4]
Fig.transnum=4

bplot

Dev.close

PROGRAM KIHON8