4.1 基本概念(4): 正規化変換

グラフ用紙に何かのデータをプロットする時のことを思い浮かべてください. まず, 直角一様座標か対数座標かのグラフ用紙を用意し, これからプロットし ようとするデータと, グラフ用紙の目盛りの数をにらんで「一目盛りいくらに しよう」と考えるはずです. このようにして実際のデータの数値とグラフ用紙 の目盛りとを対応づけるわけですが, このような操作をDCLでは「正規化変換」 と呼びます.

前章で使った次のサブルーチン・コールを, 「おまかせ」でなく自分で陽に指 定することを考えましょう.

Fig.inclpoint(x, y)
は, 第1章のプログラム HOP の場合, 次と同じになります.
Fig.window = [ -100., 100., 5.999, 6.001 ]
Fig.viewport = [ 0.2, 0.8, 0.2, 0.8 ]
Fig.transnum = 1
ユーザーの使っている座標系でグラフに描きたい範囲を「ウインドウ」と呼び ますが, 上の「おまかせ」では Fig.inclpoint メソッドで xy の最小値・最大値を求め, 切りの良い値にしてウインドウ を設定しています. この例のデータでは (UXMIN,UXMAX,UYMIN,UYMAX) = (-100.,100.,5.999,6.001) ですから, この範囲でウインドウを指定するには, Fig モジュールのパラメタwindow でこれらの値 を陽に与えます. 第1章の軌跡図(2.1ページ)で, 軌跡のまわりに 少し余白を与えようと思うと, これらの範囲を大きめにとれば良いことになり ます(次節のプログラム JUMP1 参照).

次に, このウインドウをV-座標系(実際に作画できる領域に最大内接する正方 形で [0,1]×[0,1] で規格化された描画領域. 第3.3 節参照)のどの範囲に対応させるかを考えて, これを「ビューポート」としま す. ビューポートとは, V-座標系で通常座標軸が描かれる矩形の領域のことで す. 「おまかせ」では (VXMIN,VXMAX,VYMIN,VYMAX) = (0.2,0.8,0.2,0.8) の範囲をビューポートとしますが, ここでは Fig モジュールのパラメタviewport でこれらの値を陽に与えます.

これで, ウインドウとビューポートの四隅は対応させることが出来ましたが, ウインドウ内の各点をビューポート内の点に対応させる必要があります. 線形 に対応させるか, 対数をとって対応させるかなどの任意性がありますから, 具 体的に変換関数を決めなければなりません. 「おまかせ」では直角一様座標で すから, Fig モジュールのパラメタtransnum で変換関数番号を1と指定します.