DCL:GRPH2:UEPACK : トーン塗りつぶしルーチン
UEPACK は2次元等値線図のぬりわけをおこなうメソッド(元サブルーチン)パッケージである. ぬりわけはU座標系でおこなわれるので, すべての正規化変換に対応している.
このパッケージにおいて, 等値線図のぬりわけは
「GRPH1」のトーンプリミティブを用いておこなわれている
(「GRPH1」のマニュアル参照).
なおこのパッケージでは, ぬりわけをおこなうだけで
等値線そのものや座標軸の外枠などは描かない.
UEPACK において
ユーザーが使用するメソッド(元サブルーチン)としては以下のようなものがある.
uetone | ... | トーンによる2次元等値線図のぬりわけをおこなう. |
uetonf | ... | イメージ描画機能により2次元等値線図のぬりわけをおこなう. |
uegtla | ... | 最小値・最大値・きざみ値で ぬりわけるレベル生成する. |
uegtlb | ... | 格子点値を与える配列ときざみ値で ぬりわけるレベルを生成する. |
uestlv | ... | ぬりわけるレベルとパターンを1レベルごと指定する. |
uestln | ... | ぬりわけるレベルとパターンを配列で複数レベル指定する. |
ueitlv | ... | ぬりわけるレベルとパターンを すべて無効にする. |
uepget/uepset | ... | 内部変数を参照/変更する. |
格子点座標に関する情報はUWPACK (第11節参照)が管理している.
uwsgxa/uwsgya | ... | 各座標値で設定する. |
uwsgxb/uwsgyb | ... | 最小値と最大値で設定する. |
2次元データをとにかくぬりわけたい(quick look)というときには, 単にuetoneを呼ぶだけでよい. このときは, 現在設定されているウインドウいっぱいに 等間隔の格子点を設定し, 負の領域に斜線のハッチをつける.
ぬりわけるレベル値の設定を UDPACK と同様にしておこないたいときは,
uepget/uepsetの管理する内部変数 'LTONE' を .true.
として uetone を呼べば, UDPACK が自動的に生成するきざみ値で
(厳密には UDPACK と同じアルゴリズムにもとづいてレベル値を設定し)ぬりわける.
さらに,
udgcla に対応して uegtla,
udgclb に対応して uegtlb を呼べば
コンターレベルとぬりわけるレベルの値が同一に設定される.
もしも格子点が不等間隔の場合は,
uetoneを呼ぶ前にuwsgxa (X方向)/ uwsgya (Y方向)を呼んで
格子点の座標値をあらかじめ指定すればよい.
あるいはウインドウのある一部分に等間隔の格子点を設定したい場合は,
uwsgxb (X方向)/ uwsgyb (Y方向)をもちい
最小値と最大値を指定して格子点を設定すればよい.
上に述べたように, ぬりわけるレベルをあらかじめ指定したいときは,
uetoneを呼ぶ前にuegtlaまたはuegtlbを呼べばよい.
ただしこの場合は, 等間隔のトーンレベルしか生成されない.
もしも, 不等間隔のトーンレベルとパターンを指定したい場合や,
特定のトーンレベルとパターンを追加したい場合は,
uestlvまたはuestlnを呼べばよい.
(すべてのレベルを無効にするにはueitlvを呼べばよい. )
なお, ぬりわけは指定したレベルの順におこなう.
ぬりわけるトーンパターンについては, 「GRPH1」SGPACKの付録を参照の
こと.
このパッケージが用いている「GRPH1」のトーンプリミティブは
出力装置の能力に応じてhard fillとsoft fillを切替えることができる.
sgpget/sgpsetが管理する
内部変数'LSOFTF' (「GRPH1」のマニュアル参照)が
.true.のときはsoft fillをおこなう;
.false.のときはhard fillをおこなう
(初期値は.true.).
ただし, hard fillを指定してもその能力がない場合は
soft fillとなる.
なおsoft fillはフィルエリアサブプリミティブ
(「GRPH1」フィルエリアサブプリミティブの節参照)の
下位ルーチンを用いている.
また, 色を用いたべた塗り(下位3桁が999であるようなトーンパターン番号) による塗りわけをおこなうとき, 色番号をドットなどのパターン番号として 読みかえることができる. sgpget/sgpsetの管理する内部変数'LCL2TN' (GRPH1/SGPACK参照)が.true.のときは読みかえる; .false.のときは読みかえない (初期値は.false.). ただし, 色を用いた塗りわけができないような装置では, 'LCL2TN'が.false.と設定されていても, パターン番号による読みかえをおこなおうとする.
すでに描かれた図形の上にsoft fillをおこなっても, トーンパターンが上書き
されるだけで, それまでに描かれた図形が(べた塗りをしない限り)消えてしま
うことはない.
しかしながら, 出力装置によってはhard fillによるぬりわけによって
先に描かれた図形が消えてしまうことがあるので,
座標軸や等高線図と一緒にUEPACKを用いるときは
描く順番に注意すること.
内部的には, ueblk1, ueblk2という名前の
共通ブロックを使用している.
ユーザーは同じ名前の外部手続き名・共通ブ
ロック名を用いてはならない.