So-net無料ブログ作成
検索選択

複数の水平・垂直線を描く [PostScript]

直線を描く PART2

複数の水平線を描いてみましょう。

20-02水平線.png


このプログラムだと数値を変えたいという時に面倒です。それにスマートではありません。

辞書と繰り返しオペレータを使って書き換えます。

【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 newpath % パスの初期化 % 水平線を引く(以下同じ) -100 100 moveto 200 0 rlineto -100 80 moveto 200 0 rlineto -100 60 moveto 200 0 rlineto -100 40 moveto 200 0 rlineto -100 20 moveto 200 0 rlineto -100 0 moveto 200 0 rlineto -100 -20 moveto 200 0 rlineto -100 -40 moveto 200 0 rlineto -100 -60 moveto 200 0 rlineto -100 -80 moveto 200 0 rlineto -100 -100 moveto 200 0 rlineto stroke % 線を描画

【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 /x 100 def % x座標を100とする 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 -100 20 100 { % -100から20づつ増やし100になるまで { } 内を繰り返す /y exch def % 制御変数(増分)をyに入れる。(y座標) % スタック上では制御変数が先にあるため % exchを使って/y(キー)と値(制御変数)を入れ替える x neg y moveto % 始点へ移動 x 2 mul 0 rlineto % 始点と終点の間にパスを引く } for stroke % 線を描画


【オペレータの説明】
初期値 増分値 終了値 {
   プロシージャ
   } for
繰り返しオペレータです。これは頻繁に使いますので必ず覚えましょう。
初期値が終了値になるまで増分させながらプロシージャを繰り返す(値は数値)
増分値(制御変数)は次々とスタック上に積まれていきます。
上記の例)-100 -80 -60 -20 0 20......
この制御変数をプロシージャで使用する場合は辞書を使います。
例)/x exch def
すでに制御変数はスタック上にあるため 値 /キー では辞書登録ができないので順番を入れ替えて /キー 値 の形にするためexchオペレータを使用します。
また不要であればpopオペレータで捨てることができます。
要素1 要素2 exchスタックの上位2つの要素を入れ替える
結果)要素2 要素1
要素 popスタックの1番上の要素を破棄する
数値1 数値2 mul数値1に数値2を乗算する



20-04垂直線.png

今度は垂直線を描いてみましょう。

制御変数は下記の数値となります。
これがxに入っていきます。

-100 -80 -60 -40 -20 0 20 40 60 80 100


【サンプルコード】
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 /y 100 def % y座標を100とする 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 -100 20 100 { % -100から20づつ増やし100になるまで { } 内を繰り返す /x exch def % 制御変数(増分)をxに入れる。(x座標) x y moveto % 始点へ移動 0 y 2 mul rlineto % 始点と終点の間にパスを引く } for stroke % 線を描画

タグ:PostScript
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:アート

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました