目盛りつきのワクをかく部分は、サブルーチンwaku2 (ファイルwaku2.f [link])としてある。 (決定版ができたら単にWAKUという名前にしようと思いながら、引き数が やたらに多い暫定版のまま、何年もたってしまった)。この中では多少ややこしい 作業をしている。ひとつは、GKSのルーチンGTXは文字列を表示するものであるから、 目盛りの数値を数字からなる文字列に変換することが必要である。もうひとつ、 目盛りにつける文字の位置はWCできりのいいところにし、文字の大きさをNDCの 尺度で指定したいのだが、GKSでは文字の大きさもWCの尺度で指定しなければ ならない。そこで、あまりすっきりしないが、0番の正規化変換(WC=NDC)を選択 しておいて、1番の正規化変換のWCからNDCへの換算を自まえでやる(wc2ndc.{f,c}に あるルーチンを使う)ことで切り抜けている。
引き数の数が多くなっている理由は、目盛りや数字をつける位置を、呼ぶ 側のプログラムから指定していることである。 Fortranでルーチン間で情報を引き渡すには、引き数とcommonがある。 NCAR Graphicsではcommon文をさかんに使っているが、ここでは簡単な例文と いうことでそれを避けることにした。 また、entry文を使って複数の入り口をもつサブルーチンを作り、入り口ごと の引き数の数を減らす方法もあるが、わたしが使い慣れていないので今回は避 けた。 目盛りや数字をつける位置を適切に自動計算する方法(たとえば、Heckbert, 1990)を組みこんだ上で、プログラムの形も整えたいと考えている。
現状でのwaku2の引き数について簡単に説明しておく。ただし、ここでWCと書いたのは、正規化変換1番のWCをさしている(正規化変換0番のWCはNDCと同じである)。
wxmin, wxmax, wymin, wymax (実数):ワクの左、右、下、上の辺の位置(WC) wxtk0 (実数):x軸上で目盛りを打つ最初の位置(WC) wxtki (実数):x軸上の目盛りの間隔(WC) wytk0, wytki (実数):y軸上での目盛りを打つ最初の位置と間隔(WC) dvxbtk,dvybtk (実数):それぞれの軸につける数字を伴う目盛りの長さ(NDC) dvxltk,dvyltk(実数):それぞれの軸につける数字のない目盛りの長さ(NDC) wxlb0, wxlbi, wylb0, wylbi (実数):それぞれの軸で数字をかく最初の位置と間隔(WC) chsiz (実数):数字の大きさ(NDC) labix (整数):x軸につける数字の整数部分の桁数 labfrx (整数):x軸につける数字の小数部分の桁数 labiy, labfry(整数):y軸につける数字の整数部分と小数部分の桁数なお、labix=0でlabfrx=0の場合はx軸の目盛りには数字をつけない。 y軸についても同様。