【パターン-8】半円で描くパターン

半円の上半分と下半分を横に交互に繋げたパターンを作成します。


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の絶対値を返す。

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

コメント

コメントする

CAPTCHA


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

目次