円を小さくしながら、横方向に移動します。
円の移動量dx、円の半径rが整数なのは32行めの繰り返し回数が整数でないとエラーとなるからです。
通常のプログラムではエラー処理、アラートの表示などが必要になるのでしょうが、それはPostScriptではできません。コメントに注意事項を入れておけばOKです。
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 | %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 720 720 %%HiResBoundingBox: 0 0 720 720 %%CropBox: 0 0 720 720 %%Title:円の移動 %%Creator:Studio Fruit Jam / Toyokazu Nishi %%Copyright:Studio Fruit Jam / Toyokazu Nishi %%CreationDate:2018年7月19日 木曜日午後5:03:12 % 参考:X1ターボ/X1シリーズ・プログラム200選 % 特選グラフィックスデザイン 畠中兼司・北尾和信共著 % ================ 座標変換 ================ 360 360 translate % 座標の原点を中央に移動 % ================ 背景 ================= /DeviceRGB setcolorspace % カラースペース設定 .917 .917 .863 setrgbcolor % 背景カラー設定(変更可) -360 360 720 -720 rectfill % 背景描画 % ====================== 初期値 /x 0 def /y 0 def % 円の初期位置 /r 340 def % 円の半径(整数のみ)(変更可) /e { 0 360 } def % 円の開始角度と終了角度径 /dx 10 def % 円の移動量,減衰量(0<dx /sw 1 def % 色変更スイッチ /c1 { .7 .322 .976 sethsbcolor } def % カラー1(変更可) /c2 { .217 .315 .931 sethsbcolor } def % カラー2(変更可) % ================================================ % メイン % ================================================ newpath % パスの初期化 r dx idiv { % 円の半径を移動量で割った数だけ{ }内を繰り返す x y r e arc % 円を引く /r r dx sub def % 円の半径を次第に小さくする /x x dx add def % 円を移動する % swが1の時カラー1で塗る。それ以外はカラー2で塗る sw 1 eq { c1 } { c2 } ifelse fill /sw sw neg def % swを反転する } repeat |
コメント