これはV座標系で線分を描くプログラム例である.
最初の SGOPN (SGpack OPeN)
(以下では SGpack
を単に SG
と書く)
と最後のSGCLS (SG CLoSe)
は,
それぞれ初期化および終了処理をおこなうルーチンで,
この2つの間でSGPACKの各ルーチンを呼ぶことができる.
SGOPN
を実行した後, 実際の描画をはじめる前に,
もう一つのルーチン SGFRM (SG FRaMe)
を実行しなければならない.
これは作画領域を設定するもので,
1枚の白紙を用意すると考えていただければよい.
改ページをし,新たな作画領域を設定するときにもこのルーチンを使う.
なお, SGPWSN
は使用可能なデバイス名を標準出力に書き出す
ルーチンである.
このプログラム例のように書いておくと,
普段使い慣れていないシステムでコンパイル・実行するときにも,
デバイス名のリストが出力されるので便利である.
まず,描画可能な範囲がどのように設定されているかについて 簡単に述べておく. 作画例のコーナーマークで示される長方形領域は, ふつう出力画面あるいは出力用紙の四隅に描かれ, その出力装置の最大作画領域を示す. しかし,一般にこの長方形領域の縦・横比は1でないことが多いので, 標準的なオプション設定のもとでは,コーナーマークで示される長方形 領域に最大内接するような正方形領域を[0,1]×[0,1]とするように 描画範囲が設定される (ここで単位はR座標系であるが,透視変換を用いていなければV座標系と 等しい). 最大作画領域をいっぱいに使うことも可能で, そのような例については第 2 節を参照されたい.
さて,実際の線分を描画するのが SGLNV (SG LiNe V)
で,
これは根回し型ルーチンである.
つまり線分の色と太さを指定するラインインデクス
はSGSLNI (SG Set LiNe Index)
によって設定する.
SGLNV
のルーチンの上意下達型が
SGLNZV (SG LiNe ZV)
である.
ラインインデクスも同時に指定する点が
異なるだけで SGLNV
と全く同じ働きをする.
作画例のうち,上側の4本がSGLNV
による出力,
下側の4本がSGLNZV
による出力であるが,
同じ結果が得られていることがわかる.
なお, ラインインデクスは3桁の整数(nnm)で, 上位2桁(nn)が色番号, 下位1桁(m)が線の太さである. ただし, どんなディバイスでも色と太さの両方が変えられるとは 限らないので,色または太さしか変えられないようなディバイスでは色と太さのインデクスを読みかえる. たとえば,太さの変えられないようなディバイスで1桁の数字(太さ)を 指定していも, それは色のインデクスとして読みかえられ線分の色が変わる. 詳しくは「GRPH1」 マニュアルを参照されたい.