
三角形をランダムに回転させて配置するプログラムです。
15~19行 画面サイズ(gw,gh)をグリッド数(grid)で割ってグリッド幅(w,h)出しています。
28行 グリッド幅を三角形の一辺(hen)とします。
30行 回転角度(0度 90度 180度 270度 360度)をang配列に入れます。
37行 そこから0〜4までの乱数を発生させて(rand 5 mod)角度を取り出し(get)回転(rotate)します。
38〜39行 三角形を描きます。ここでは相対位置を使用して線分を追加しています。
47~56行 縦と横のx,y座標を繰り返し計算して、三角形プロシージャに値を渡して行きます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 720 720 %%HiResBoundingBox: 0 0 720 720 %%CropBox: 0 0 720 720 %%Title:三角形ランダム配置パターン001 %%Creator:Studio Fruit Jam / Toyokazu Nishi % ================ 座標変換 ================ 0 0 translate % ================ 背景 ================= /DeviceRGB setcolorspace % カラースペース設定 0 0 0 setrgbcolor % 黒 0 720 720 -720 rectfill % 黒四角形を配置 % ================ 定義 ================ /gw 720 def % 画面横サイズ /gh 720 def % 画面縦サイズ /grid 10 def % グリッド数 /w gw grid div def % グリッド横幅 /h gh grid div def % グリッド縦幅 /hc 1 def % 色相 /sc .6 def % 彩度 /bc 1 def % 明度 % ================================================ % 三角形をランダムに配置する % ================================================ /hen w def % 三角形の一辺の長さ(グリッド横と同じにする) /hen2 hen 2 div def % 一辺の長さの半分 /ang [ 0 90 180 270 360 ] def % 三角形の回転角度の配列 /triangle { % 三角形プロシージャ /dy exch def % y座標を取得 /dx exch def % x座標を取得 dx dy translate % x y 座標に移動 hen2 dup translate % 38行で回転の中心を移動する分の補正 ang rand 5 mod get rotate % 配列からランダムに角度を取得し、回転する hen2 neg dup moveto % 三角形の回転の中心を移動する hen 0 rlineto 0 hen rlineto closepath % 三角形描画 hc sc bc sethsbcolor % カラー設定 fill % 塗りつぶす } def % ================================================ % メイン % ================================================ 0 1 grid 1 sub { % 0〜9まで繰り返す /yrow exch def % 縦のグリッド数を取得 /y yrow h mul def % y座標を計算 0 1 grid 1 sub { % 0〜9まで繰り返す /xcol exch def % 横のグリッド数を取得 /x xcol w mul def % x座標を計算 gsave x y triangle grestore % 三角形プロシージャ呼び出し /hc hc .01 sub def % 色相から0.01引く } for } for |
【応用例】

コメント