三角形をランダムに回転させて配置するプログラムです。
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
【応用例】
コメント