Next:対数座標軸 Up:座標軸の描画 Previous:概要

簡単な座標軸

まず, 最も簡単な例を示そう. X軸(左右方向) ・ Y軸(上下方向)とも線形座標軸 (均等な目盛り)を描く. それぞれの軸には目盛りとラベル(目盛りのところにつける数字), タイトル(軸の説明)をつける. さらに図のタイトルもつける.


uxyz01.f:page1

座標軸関連のパッケージを使用するときに 必ずおこなわなければならないことは, ウインドウとビューポートを適切に設定することである. ウインドウとはユーザーの定義する座標系 (U座標系: ここでは経度と緯度の座標系) において定義される矩形領域である; ビューポートとは仮想直角座標系 (V座標系: ふつうは最大 [0.0, 1.0] × [0.0, 1.0] の閉じた領域に限定される仮想的な座標系) において定義される矩形領域である. ウインドウとビューポートの対応関係は, サブルーチンSGSWND, SGSVPT, SGSTRN (「GRPH1」マニュアル, 正規化変換の項 参照)を用いて設定し, SGSTRFによって確定する (Ver.4 までは, これらを SGSNTRでおこなっていた). この例では, X方向について, 経度 -180°から +180°までを 描画可能な範囲の0.2から0.8 (左端が0.0, 右端が1.0)へ 対応させている; またY方向について, 緯度 -90 °から +90°までを 0.3から0.7 (下端が0.0, 上端が1.0)へ対応させている. (なおここでの描画可能な範囲は, コーナーマークで示される長方形領域に 最大内接するような正方形領域となっていることに注意していただきたい.)

座標軸の作画を行なうにあたって最も基本的なことは, 1本の座標軸( 1本の軸とそれに付ける目盛りおよびラベルによって構成される) を描くために作画ルーチンを1回呼ぶということである. この例では, 上下左右あわせて4回作画ルーチン ( X軸はUXAXDV, Y軸はUYAXDV)を呼んでいる. 最初の引数 'B', 'T', 'L', 'R'によって, それぞれ, 下, 上, 左, 右側の軸を描画することを指定する. 座標軸を描くこれらの場所は, ウインドウとビューポートを設定した矩形領域のちょうど境界線上にある. 次の2つの引数は, 短い目盛りと長い目盛りをどんな間隔で打つか指定する. 単位はU座標系の値(ここでは, 経度, 緯度の値)である. ラベルは長い目盛りのところにだけ描かれる.

軸につけるタイトルおよび図のタイトルも同じように, それぞれの軸についてタイトル描画ルーチンを呼ぶ. 小さい文字で描きたいときは UXSTTL, UYSTTLを, 大きい文字で描きたいときは UXMTTL, UYMTTLを用いる. 最初の引数によって, タイトルをつける軸の場所を指定する. 2番目の引数はタイトルとして描く文字列を指定する. 最後の引数はタイトルを描く位置を -1 から +1 までの実数値で指定する. たとえばX軸については, -1: 左寄せ, 0: センタリング, +1: 右寄せ となる; またY軸については, -1: 下寄せ, 0: センタリング, +1: 上寄せとなる. この例のX軸(下側), Y軸(左側)のように, 同じ軸に対して2回以上タイトル描画ルーチンを呼んだときは, 重ならないようにだんだんと外側の方へずらして タイトルが描かれる. これによって, それぞれの軸に複数のタイトルをつけることができる.

言われるままに作画してみて, 「はて, タイトルやラベルの大きさ, 目盛の長さなどは一体どのように決まっているのだろか?」と, ほとんどのユーザーは不思議に思っていることであろう. じつはこれらの属性は, UZPACKのなかにあるサブルーチン UZpGET/UZpSETの 管理する内部変数を参照して決められている. 実際, ユーザーがタイトルの大きさやその描く向きなどを 指定することは可能であるが, ここではそのような立ち入った例は示さない. ふつうの用途には, パッケージがあらかじめ用意している内部変数の値に したがっていても, 充分に満足できる座標軸が作画可能なはずである.

Source:uxyzpk/uxyz01.f


地球流体電脳倶楽部 DCL-5.0
Last modified: Wed Apr 30 13:59:59 1997