【円弧-10】円環を描いてみよう


円を回転させて環を作成します。
円の公式、x=r*cos(th)、y=r*cos(th)を使い、計算された座標に円を描いていきます。


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:円環

% ========= 定義 =========
/r 30 def % 半径
/s 2 def % 円と円の間隔
/dx 80 def % 横の大きさ
/dy 80 def % 縦の大きさ

.5 setlinewidth
0 setgray
0 0 240 240 rectstroke % 黒枠
120 120 translate % 座標の原点を中央に移動

% ======= メイン =========
newpath % パスの初期化
0 s 360 s sub { % 楕円軌道(0から360-sまでs刻みで{ }内を繰り返す
  /th exch def % 制御変数をth(角度)に入れる
  /x dx th cos mul def % 円公式
  /y dy th sin mul def % 円公式
  x y r 0 360 arc stroke % (x,y)に半径rで円を描く
} 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
32
33
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 240 240
%%Title: 円環

% ========= 定義 =========
/r 30 def % 半径
/s 2 def % 円と円の間隔
/dx 80 def % 横の大きさ
/dy 20 def % 縦の大きさ

% ========= カラー定義 =========
/hc01 .7 def % 色相初期値
/hc02 1 def % 色相最大値
/dc .003 def % 色相増分値

.5 setlinewidth
0 0 0 setrgbcolor
0 0 240 240 rectfill % 黒背景
120 120 translate % 座標の原点を中央に移動

% ======= メイン =========
newpath % パスの初期化

0 s 360 s sub { % 楕円軌道(0から360-sまでs刻みで{ }内を繰り返す
  /th exch def % 制御変数をth(角度)に入れる
  /x dx th cos mul def % 円公式
  /y dy th sin mul def % 円公式
  hc01 1 1 sethsbcolor %カラー設定
  x y r 0 360 arc stroke % (x,y)に半径rで円を描く
  % 色相初期値が最大値と同じか超えたら増分値の符号を反転する
  hc01 hc02 ge { /dc dc neg def } if
  /hc01 hc01 dc add def % 色相初期値に増分値を足す
} for

その他、円環を重ねたり


細長い楕円を回転させるなど、様々なバリエーションが考えられます。


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

コメント

コメントする

CAPTCHA


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

目次