半円の上半分と下半分を横に交互に繋げたパターンを作成します。
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 %!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 240 240
%%Title: 上半円と下半円を重ねたパターン
% ========= 定義 =========
/x0 -120 def /x1 120 def % x座標
/w x0 abs x1 abs add def % x座標を足して 横幅を出す
/rs w 10 div def % 横幅の分割数(偶数のみ)
/r rs 2 div def % 円の半径
/y0 -120 def /y1 120 def % y座標
/sw 1 def % 半円を交互に描くための切替スイッチ
0 setgray % 黒色
0 0 240 240 rectstroke % 黒枠
120 120 translate % 座標の原点を中央に移動
% ========= メイン =========
newpath % パスの初期化
y0 r sub 5 y1 r add { % y0-rからy1+rまで5づつ増分
/y exch def
x0 r add rs x1 r sub { % x0+rからx1-rまでrsづつ増分
/x exch def
sw 1 eq { x y r 180 0 arcn} % 上半円(時計回り)
{ x y r 180 0 arc } ifelse % 下半円(反時計回り)
/sw sw neg def % swの符号を反転(上半円と下半円を交互にする)
} for
stroke
} for
レインボーカラーで色を付けました。
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 %!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 240 240
%%Title: 上半円と下半円を重ねたパターン
% ========= 定義 =========
/x0 -120 def /x1 120 def
/w x0 abs x1 abs add def
/rs w 10 div def
/r rs 2 div def
/y0 -120 def /y1 120 def
/hc 0 def % 色相
/y 0 def
/sw 1 def
0 0 0 setrgbcolor
0 0 240 240 rectfill % 黒背景
120 120 translate % 座標の原点を中央に移動
1 dup scale
newpath % パスの初期化
y0 r sub 3 y1 r add {
/y exch def
x0 r add rs x1 r sub {
/x exch def
sw 1 eq { x y r 180 0 arcn}
{ x y r 180 0 arc } ifelse
/sw sw neg def
} for
hc 1 1 sethsbcolor % カラー設定
stroke
/hc hc 0.01 add def % 色相に0.01を足す
} for
【オペレータの説明】
数値1 abs | 数値1の絶対値を返す。 |
コメント