前章で使った次のサブルーチン・コールを,「おまかせ」でなく自分で陽に指 定することを考えましょう.
call DclScalingPoint( x, y )は,第1章のプログラム HOP の場合,次と同じになります.
call DclFitScalingParm
call DclSetTransFunction
call DclSetWindow( -100., 100., 5.999, 6.001 )ユーザーの使っている座標系でグラフに描きたい範囲を「ウインドウ」と呼び ますが,上の「おまかせ」では DclScalingPoint ルーチンで X と Y の最小値・最大値を求め,DclFitScalingParmで切りの良い値にしてウインドウ を設定しています.DclScalingPointはウインドウ情報を指定する代わりに,これ からプロットしたいデータそのものを与えて,これらがすべてウインドウ内に 納まるようにするものです.この例のデータでは (uxmin,uxmax,uymin,uymax) = (-100.,100.,5.999,6.001) ですから, この範囲でウインドウを指定するには,DclSetWindow ルーチンでこれらの値 を陽に与えます.第1章の軌跡図(f:hopページ)で,軌跡のまわりに 少し余白を与えようと思うと,これらの範囲を大きめにとれば良いことになり ます(次節のプログラム JUMP1 参照).
call DclSetViewport( 0.2, 0.8, 0.2, 0.8 )
call DclSetTransFunction
次に,このウインドウをV-座標系(実際に作画できる領域に最大内接する正方 形で[0,1] [0,1]で規格化された描画領域.第[here] 節参照)のどの範囲に対応させるかを考えて,これを「ビューポート」としま す.ビューポートとは,V-座標系で通常座標軸が描かれる矩形の領域のことで す.「おまかせ」では (vxmin,vxmax,vymin,vymax) = (0.2,0.8,0.2,0.8) の範囲をビューポートとしますが,ここではDclSetViewport ルーチンでこれらの値を陽に与えます.
このように設定されたパラメータの値は,変換関数を確定するルーチン DclSetTransFunction ルーチンを呼ぶことで有効になります.DclSetWindow などで値を設 定しただけでは何も変わらず,DclSetTransFunction が呼ばれてはじめて正規化変換 が具体的に決められるのです.
DclScalingPoint ルーチンを使ってウインドウを決めたり,初期値を使うことで ビューポートや変換関数番号の設定を省略する場合には,DclFitScalingParm ルー チンを呼んで正規化変換の設定をおまかせすることになります.一方, DclSetWindow, DclSetViewportの2つを自前で呼んでこれらを設定し た場合には,あと何も必要ありません.いずれの場合にも,DclSetTransFunctionルー チンを呼んで正規化変換を確定します.
DclSetWindow (GRSWND) |
ウインドウを設定する. |
DclSetViewPort (GRSVPT) |
ビューポートを設定する. |
DclSetTransNumber (GRSTRN) |
変換関数番号を設定する. |
DclSetTransFunction (GRSTRF) |
変換関数を確定する. |
DclFitScalingParm (USPFIT) |
すでに設定された情報から、適当なスケーリングで正規化変換パラメータを決める. |
* 括弧の中は、対応するf77インターフェイス名.