ランダムな点を打ってみましょう。
繰り返しオペレータrepeatを使い100回小さい円を描いて点にします。
実はPostScriptには点を描くオペレータはありませんので小さい円か、短い線を点にするしかありません。
乱数を指定範囲内で発生させるためにmodを使います。
1 2 3 4 5 6 7 8 9 10 11 |
[cc lang="postscript" tab_size=“4” lines="40" highlight="6-10"] %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:点を打つ 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 100 { % 100回繰り返す /x rand 241 mod 120 sub def % -120から120の間の乱数をxに入れる /y rand 241 mod 120 sub def % -120から120の間の乱数をyに入れる x y 1 0 360 arc fill % 半径1ポイントの塗りつぶし円を描く } repeat[/cc] |
乱数を入れる部分を他の言語で書けば x=(rand%241)-120 となります。
randが発生する最低値は0なので120を引けば-120になります。
またmodの余りで最大値は240(241-1)なので120を引けば120になります。
【オペレータの説明】
整数 { 処理 } repeat | 処理を整数回繰り返し実行する。 |
数値1 数値 2 sub | 数値1から 数値 2を減算した結果を返す。 |
rand | 0~2の31乗-1 の整数の疑似乱数を返す |
整数1 整数2 mod | 整数1を整数2で割った余り(整数)を返す (例) 7 3 mod 余り1 7 4 mod 余り3 7 5 mod 余り2 -7 3 mod 余り-1 randとmodを使用して、いろんな乱数が作れます。 |
次は線の先端を丸くして点にします。
0 0 rlinetoは始点と終点が同じで、おかしな感じがしますが、0以外にすると点にはなりません
1 2 3 4 5 6 7 8 9 10 11 12 |
[cc lang="postscript" tab_size=“4” lines="40" highlight="5,7-11"] %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:点を打つ 120 120 translate % 座標の原点を中央に移動 1 setlinecap % 線の先端を丸くする newpath % パスの初期化 100 { % 100回繰り返す /x rand 241 mod 120 sub def % -120から120の間の乱数をxに入れる /y rand 241 mod 120 sub def % -120から120の間の乱数をyに入れる x y moveto 0 0 rlineto % 半径1ポイントの円を描く } repeat[/cc] |
コメント