前頁 メニュー 次頁
プリンタを描画装置として使う
1.プリンタ・グラフィックスの開始
オプション・メニューのグラフィックで,画像出力の形式としてプリンタ を選ぶとグラフィックスはプリンタに出力される。
プリンタには描画命令が送られる。Linuxのcups-pdfのようにファイルに出力するプリンタドライバを指定してもよい。その方法でベクトルグラフィックスの画像が得られる。PDFで出力したファイルは,変換ソフトを用いてPostScript等への変換も可能になる。
描画領域を正方形以外にしたいとき,以下の命令が使える。
2.描画領域を操作する命令
詳細はJISを参照。
SET VIEWPORT
SET DEVICE WINDOW
SET DEVICE VIEWPORT
ASK VIEWPORT
ASK DEVICE WINDOW
ASK DEVICE VIEWPORT
DEVICE VIEWPORTの単位はメートル。
3.例
(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(o),高さh(o)(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) 次の命令を実行すると例外状態になる。
GET POINT
LOCATE POINT
(5) CLEAR文を実行すると,改頁する。
(6) SET TEXT BACKGROUNDは実行できない。
(7) SET DRAW MODEは無視される。
6.隠し命令
SET AXIS COLOR 数値式
軸を描く命令(DRAW GRID, DRAW AXES)で用いる色の色指標を変更する。
たとえば,軸を黒で描きたければ
SET AXIS COLOR 1
を実行する。
(Note)この文は,将来,文法を変更する可能性がある。
7.トラブル・シューティング
プリンタ・ドライバによっては,末尾にセミコロンのないPLOT LINES文
PLOT LINES: x,y
で点を打たないものがあります。末尾にセミコロンを追加して動作を確認してください。
折れ線で接続したくないときは,
SET POINT STYLE 1
PLOT POINTS: x,y
で置き換えてください。