デフォルトでは座標原点は左下隅になります。座標単位はすでに説明したよ うにポイントです。もちろんこれは変更することが出来ます。例えばA4の用紙 を横向きに使う応用を考えましょう。デフォルトでは用紙は長い方向がY、短 いほうがXです。これを長いほうをXにします。そのためにまず原点を移動しま しょう。
576 0 translate
X方向に576ポイント移動しました。8インチ、20cmあまり、A4の用紙の狭いほ うの幅程度です。ここで座標軸を回転して紙の長いほうがX軸になるようにし ます。
90 rotate
90度反時計周りに座標軸が回転しました。これで用紙を横長に使えるようにな りました。
次に一枚の紙に4つのグラフを書くことを考えましょう。まず縦横のスケー ルを縮めないと入りきれません。
0.5 0.5 scale
これでX軸、Y軸とも0.5倍のスケールに変更されました。一つ目のグラフを書 き終えたところで原点を横に移動します。
828 0 translate
先程と同じように原点が移動しました。二つ目のグラフを一つ目のグラフの右 横に書きます。次には一つ目のグラフの上に三つ目を書きましょう。
-828 576 translate
移動しました。しかしこれで原点は移動しましたが、自分の領域を越えて絵を 書いているような行儀の悪いグラフの場合別のグラフにはみ出してしまいます。 ある領域の外には絵を書かないようクリッピング領域を定めます。
newpath 0 0 moveto 828 0 rlineto 0 576 rlineto -828 0 rlineto closepath clip
パスはこれまで絵を書くほうで使ってきましたが、今度はclipで、絵の一部を 切り出す道具として使いました。これから後に書く絵は上に定めたクリッピン グ領域の内側にだけ表示されます。ここでちょっと注意が必要です。グラフを 一枚に4つ書く例で、一つ目をcli pしました。2つ目のグラフを書くために原 点を移動して新たにclip領域を定めました。絵を書いてみると、2つ目のグラ フが表示されません。なぜでしょうか。実は1つ目のクリッピング領域がまだ 生きていて2つ目と両方有効になってしまったからです。片方にはいれば他方 には入らないので絵はかけません。2つ目を表示するには最初のクリッピング 領域を無効にしなければなりません。initclipを使います。
initclip
このあと新たにクリッピングエリアを定義します。
showpageをするとクリッピング領域や座標原点の移動、回転やスケールがす べてリセットされます。initgraphが実行されるからです。複数のページを同 じ縮尺や座標、クリップなどで表示したいときはshowpageの前にそういった情 報を保存してshowpageを実行する必要があります。
gsave showpage grestore
gsaveとgrestoreは他に点線やグレースケール等も保存再生します。この使い 方は他にも、例えば図の中に斜めに文字を入れたい場合
gsave 30 rotate (Inclined comment) show grestore
文字Inclined commentだけが30度傾いて表示され、あとはまたもとの座標に戻 ります。