【点-1】ランダムに点を打ってみよう

ランダムな点を打ってみましょう。
繰り返しオペレータ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を減算した結果を返す。
rand0~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を使用して、いろんな乱数が作れます。
(例)
rand 101 mod 50 sub (-50から50までの整数)
rand 11 mod 10 mul (0から100までの10きざみの整数)
rand 11 mod 0.1 mul (0.0から1.0までの0.1きざみの少数)
rand 256 mod 0 sub (0から255までの整数)

次は線の先端を丸くして点にします。
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

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次