Next:U座標系で線分を描く Up:基本描画 Previous:概要

V座標系で線分を描く

これはV座標系で線分を描くプログラム例である.


sgpk01.f:page1

描画準備と終了:

最初の SGOPN (SGpack OPeN) (以下では SGpackを単に SGと書く) と最後のSGCLS (SG CLoSe)は, それぞれ初期化および終了処理をおこなうルーチンで, この2つの間でSGPACKの各ルーチンを呼ぶことができる. SGOPNを実行した後, 実際の描画をはじめる前に, もう一つのルーチン SGFRM (SG FRaMe)を実行しなければならない. これは作画領域を設定するもので, 1枚の白紙を用意すると考えていただければよい. 改ページをし,新たな作画領域を設定するときにもこのルーチンを使う. なお, SGPWSNは使用可能なデバイス名を標準出力に書き出す ルーチンである. このプログラム例のように書いておくと, 普段使い慣れていないシステムでコンパイル・実行するときにも, デバイス名のリストが出力されるので便利である.

線分描画(V座標系):

まず,描画可能な範囲がどのように設定されているかについて 簡単に述べておく. 作画例のコーナーマークで示される長方形領域は, ふつう出力画面あるいは出力用紙の四隅に描かれ, その出力装置の最大作画領域を示す. しかし,一般にこの長方形領域の縦・横比は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」 マニュアルを参照されたい.

Source:sgpack/sgpk01.f


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