プリンタを描画装置として使う

1.プリンタ・グラフィックスの開始
 オプション・メニューのグラフィックで,画像出力の形式としてプリンタ を選ぶとグラフィックスはプリンタに出力される。
 プリンタには描画命令が送られる。Linuxのcups-pdfのようにファイルに出力するプリンタドライバを指定してもよい。
  その方法でベクトルグラフィックスの画像が得られる。PDFで出力したファイルは,変換ソフトを用いてPostScript等への変換も可能になる。

2.トラブル・シューティング
プリンタ・ドライバによっては,末尾にセミコロンのないPLOT LINES文 
PLOT LINES: x,y 
で点を打たないものがあります。末尾にセミコロンを追加して動作を確認してください。 

3.描画領域を操作する命令
  描画領域を正方形以外にしたいとき,以下の命令が使える。
 詳細はJISを参照。
SET VIEWPORT
SET DEVICE WINDOW
SET DEVICE VIEWPORT
ASK VIEWPORT
ASK DEVICE WINDOW
ASK DEVICE VIEWPORT
DEVICE VIEWPORTの単位はメートル。

例
(1) 描画領域の縦横比変更
次のプログラムでは,用紙を縦に用いることを前提として,
描画領域の横:縦を3:4に変更している。
110 GRAPHICS DEVICE PRINTER
140 SET DEVICE WINDOW 0, 3/4, 0, 1
150 SET VIEWPORT      0, 3/4, 0, 1
160 SET WINDOW  -3, 3,  -4, 4
170 DRAW grid
180 DEF f(x)=x*(x-1)*(x+1)
190 FOR x=-3 TO 3 STEP 0.01
200    PLOT LINES: x,f(x);
210 NEXT x
220 END

解説
横:縦が3:4の領域を描画に用いるために,140行と150行のように
 0, 3/4, 0, 1 をパラメータとするSET DEVICE WINDOW文とSET VIEWPORT文を実行する。
横長の場合,たとえば,縦:横=3:4にしたいときは,
140 SET DEVICE WINDOW 0, 1, 0, 3/4
150 SET VIEWPORT      0, 1, 0, 3/4
とすればよい。

(2) 余白の追加 
 DEVICE VIEWPORTを縮めることで上下左右の余白を増やすことができる。
120 ASK DEVICE VIEWPORT dvleft,      dvright,      dvbottom,      dvtop
130 SET DEVICE VIEWPORT dvleft+0.01, dvright-0.01, dvbottom+0.01, dvtop-0.01
の2行を上のプログラムに追加すると,上下左右の余白が1cmずつ増える。

(3) サイズ指定
幅w(㎜),高さh(㎜)(h<w)の画像を得たいときは, 
GRAPHICS DEVICE PRINTER
ASK DEVICE VIEWPORT dvleft, dvright,         dvbottom, dvtop
SET DEVICE VIEWPORT dvleft, dvleft + w/1000, dvbottom, dvbottom + h/1000
SET DEVICE WINDOW 0, 1, 0, h/w
SET VIEWPORT      0, 1, 0, h/w
とします。w<hのときは,下の2行を 
SET DEVICE WINDOW 0, w/h, 0, 1 
SET VIEWPORT      0, w/h, 0, 1 
とします。

4.補足
(1) ASK DEVICE SIZE w,h,s$
   w,hは数値変数名,s$は文字列変数名
   印字可能面の幅をwに,高さをhに,"METERS"をs$に代入する。
  幅と高さの単位はメートル。
(2) 次の命令は意味のある数値を返します。単位はピクセル。
  ASK PIXEL SIZE
(3) 次の命令は-1を返す。例外状態にならないので注意。
 ASK PIXEL VALUE
 ASK PIXEL ARRAY
(4) 次の命令を実行するとextype11140の例外状態になる。
  GET POINT
  LOCATE POINT
(5) CLEAR文を実行すると,改頁する。


5.廃止予定の命令
 以下の文は,将来,廃止予定。
  SET AXIS COLOR 数値式
   軸を描く命令(DRAW GRID, DRAW AXES)で用いる色の色指標を変更する。
   たとえば,軸を黒で描きたければ
   SET AXIS COLOR 1
   を実行する。
 GRAPHICS DEVICE PRINTER
 プログラム1行目に書いて描画出力先をプリンタに変える。