ランダムな点を打ってみましょう。
繰り返しオペレータrepeatを使い100回小さい円を描いて点にします。
実はPostScriptには点を描くオペレータはありませんので小さい円か、短い線を点にするしかありません。
乱数を指定範囲内で発生させるためにmodを使います。
1
2
3
4
5
6
7
8
9
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
乱数を入れる部分を他の言語で書けば 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 %!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
コメント