

円を横に往復運動させながら小さくしていくというプログラムです。
移動方向の反転にはmodを使い、余りが0の時に反転するようにしています。
やってみよう サンプルでは8で割っていますが、他の数値で試してみてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 240 240 %%Title:円の移動 /x 0 def /y 0 def % 初期座標 /r 110 def % 円の半径 /e { 0 360 } def % 円の開始角度と終了角度 /dx 2 def % 円の移動量 /sw 1 def % 色変更スイッチ /c1 { .958 .522 .976 sethsbcolor } def % c1色 /c2 { .617 .415 .831 sethsbcolor } def % c2色 120 120 translate % 座標の原点を中央に移動 newpath % パスの初期化 0 1 55 { % 0から始めて55まで1づつ増やす /dir exch def % 制御変数をdir(方向)に入れる % 制御変数dirを8で割った時の余りが0の時に移動方向を反転する dir 8 mod 0 eq { /dx dx neg def } if x y r e arc % 円を引く /r r 2 sub def % 円の半径を次第に小さくする /x x dx add def % 円を移動する % swが1の時c1色で塗る。それ以外はc2色で塗る。 sw 1 eq { c1 } { c2 } ifelse fill /sw sw neg def % swの符号を反転する } for |
コメント