方眼を描いてみましょう。
【直線-14】で描いた複数の水平線と垂直線を合わせればできます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 %!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 240 240
120 120 translate % 座標の原点を中央に移動
newpath % パスの初期化
/x 100 def % x座標
-100 20 100 { % -100から20づつ増やし100になるまで { } 内を繰り返す
/y exch def % y(座標)へ制御変数を入れる
x neg y moveto % 始点へ移動
x 2 mul 0 rlineto % 始点と終点の間にパスを引く
} for
/y 100 def % y座標を100とする
-100 20 100 { % -100から20づつ増やし100になるまで { } 内を繰り返す
/x exch def % x(座標)へ制御変数を入れる
x y moveto % 始点へ移動
0 y 2 mul rlineto % 始点と終点の間にパスを引く
} for
stroke % 線を描画
これはこれでもいいですが、同じ処理が繰り返されています。
プロシージャを使ってもっと簡潔にしてみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 %!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 240 240
/x 100 def % x座標を100とする
/y 100 def % y座標を100とする
/h_line { % 水平線を引くプロシージャ
x neg pos moveto % posには制御変数が入る(-100,-80,-60....80,100)
x 2 mul 0 rlineto
} def
/v_line { % 垂直線を引くプロシージャ
pos y moveto
0 y 2 mul neg rlineto
} def
120 120 translate % 座標の原点を中央に移動
newpath % パスの初期化
-100 20 100 { % -100から20づつ増やし100になるまで { } 内を繰り返す
/pos exch def % 制御変数をposに入れる
h_line % h_lineプロシージャを呼び出す
v_line % v_lineプロシージャを呼び出す
} for
stroke % 線を描画
さらに方眼を引くプロシージャで簡潔にしてみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 %!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 240 240
/x 100 def % x座標を100とする
/y 100 def % y座標を100とする
/line { % 方眼を引くプロシージャ
x neg pos moveto % 水平線を引く
x 2 mul 0 rlineto
pos y moveto % 垂直線を引く
0 y 2 mul neg rlineto
} def
120 120 translate % 座標の原点を中央に移動
newpath % パスの初期化
-100 20 100 { % -100から20づつ増やし100になるまで { } 内を繰り返す
/pos exch def % 制御変数をposに入れる
line % lineプロシージャを呼び出す
} for
stroke % 線を描画
【オペレータの説明】
/キー { 処理 } def | 複数の処理を一つにまとめるとプログラムが簡潔になり、メンテしやすくなります。これを手続き(プロシージャ)と言います。 例)/heikin { add 2 div } def % 2つの数値の和の平均を求める 30 70 heikin |
数値1 数値2 add | 数値1と数値2を足した値を返す |
数値1 数値2 div | 数値1を数値2で割った値を返す |
コメント