グラフ用紙に何かのデータをプロットする時のことを思い浮かべてください.
まず, 直角一様座標か対数座標かのグラフ用紙を用意し, これからプロットし
ようとするデータと, グラフ用紙の目盛りの数をにらんで「一目盛りいくらに
しよう」と考えるはずです. このようにして実際のデータの数値とグラフ用紙
の目盛りとを対応づけるわけですが, このような操作をDCLでは「正規化変換」
と呼びます.
前章で使った次のサブルーチン・コールを, 「おまかせ」でなく自分で陽に指 定することを考えましょう.
CALL USSPNT( NMAX, X, Y )は, 第1章のプログラム HOP の場合, 次と同じになります.
CALL USPFIT
CALL GRSTRF
CALL GRSWND( -100., 100., 5.999, 6.001 )ユーザーの使っている座標系でグラフに描きたい範囲を「ウインドウ」と呼び ますが, 上の「おまかせ」では USSPNT ルーチンで X と Y の最小値・最大値を求め, USPFITで切りの良い値にしてウインドウ を設定しています. USSPNTはウインドウ情報を指定する代わりに, これ からプロットしたいデータそのものを与えて, これらがすべてウインドウ内に 納まるようにするものです. この例のデータでは (UXMIN,UXMAX,UYMIN,UYMAX) = (-100.,100.,5.999,6.001) ですから, この範囲でウインドウを指定するには, GRSWND ルーチンでこれらの値 を陽に与えます. 第1章の軌跡図(2.1ページ)で, 軌跡のまわりに 少し余白を与えようと思うと, これらの範囲を大きめにとれば良いことになり ます(次節のプログラム JUMP1 参照).
CALL GRSVPT( 0.2, 0.8, 0.2, 0.8 )
CALL GRSTRN( 1 )
CALL GRSTRF
次に, このウインドウをV-座標系(実際に作画できる領域に最大内接する正方
形で
[0,1]×[0,1] で規格化された描画領域. 第3.3
節参照)のどの範囲に対応させるかを考えて, これを「ビューポート」としま
す. ビューポートとは, V-座標系で通常座標軸が描かれる矩形の領域のことで
す. 「おまかせ」では (VXMIN,VXMAX,VYMIN,VYMAX) = (0.2,0.8,0.2,0.8) の範囲をビューポートとしますが, ここではGRSVPT ルーチンでこれらの値を陽に与えます.
これで, ウインドウとビューポートの四隅は対応させることが出来ましたが,
ウインドウ内の各点をビューポート内の点に対応させる必要があります. 線形
に対応させるか, 対数をとって対応させるかなどの任意性がありますから, 具
体的に変換関数を決めなければなりません. 「おまかせ」では直角一様座標で
すから, GRSTRN ルーチンで変換関数番号を1と指定します.
このように設定されたパラメータの値は, 変換関数を確定するルーチン GRSTRF ルーチンを呼ぶことで有効になります. GRSWND などで値を設 定しただけでは何も変わらず, GRSTRF が呼ばれてはじめて正規化変換 が具体的に決められるのです.
UXMIN, UXMAX (実数型) ウインドウの x 座標の 最小値と最大値. UYMIN, UYMAX (実数型) ウインドウの y 座標の 最小値と最大値.
VXMIN, VXMAX (実数型) ビューポートの x 座標の 最小値と最大値.(初期値は0.2と0.8) VYMIN, VYMAX (実数型) ビューポートの y 座標の 最小値と最大値.(初期値は0.2と0.8)
ITR (整数型) 変換関数番号. 1:直角一様座標, 2:片対数(y軸)座標, 3:片対数(x軸)座標, 4:両対数座標. (初期値は1)
ウインドウ, ビューポート, および変換関数を設定したあとで, このルー チンを呼び, 正規化変換を確定する.
USSPNT ルーチンを使ってウインドウを決めたり, 初期値を使うことで ビューポートや変換関数番号の設定を省略する場合には, USPFIT ルー チンを呼んで正規化変換の設定をおまかせすることになります. 一方, GRSWND, GRSVPT, GRSTRN の3つを自前で呼んでこれらを設定し た場合には, あと何も必要ありません. いずれの場合にも, GRSTRFルー チンを呼んで正規化変換を確定します.
USSPNT で設定されたデータをもとにウインドウを決め, それ以外の パラメータも陽に指定しなければそれぞれの初期値を使って, 正規化変換 を設定する.
Copyright (C) 2000 GFD Dennou Club. All rights reserved.