

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

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

コメント