【円弧-17】円の移動8

同心円上の弧(半円)が次第に大きくなる図形を描きます。
次の周の同心円、弧の半径は次の図のように計算します。

参考:特選グラフィックスデザイン/畠中兼司・北尾和真 共著/昭和60年5月1日初版発行/発行所:株式会社 学習研究社


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
39
40
41
42
43
44
45
46
47
48
49
50
51
%!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月31日 火曜日午前11:23:55
% 参考:特選グラフィックスデザイン P37 畠中兼司・北尾和真 共著
% 昭和60年5月1日初版発行 発行所:株式会社 学習研究社

% ================ 座標変換 ================
360 360 translate % 座標の原点を中央に移動
% ================ 背景 =================
/DeviceRGB setcolorspace  % カラースペース設定
.917 .917 .863 setrgbcolor
-360 360 720 -720 rectfill

% ====================== 初期値
/r0 30 def % 同心円の最初の半径
/r1 10 def % 最初の弧(半円)の半径
/a 5 def % 同心円、弧の大きさの変化量
1 setlinewidth
0 0 0 setrgbcolor

% ================================================
%  メイン
% ================================================
newpath % パスの初期化
1 1 8 { % 同心円
  /j exch def % 偶数回の時に弧の方向を変える
  0 5 355 { % 弧を置く
    /th exch def % 制御変数をthに代入(角度)                                
    /x r0 th cos mul def % 円の公式
    /y r0 th sin mul neg def % 円の公式
    % jを2で割った余りが1の場合(開始角360-th、終了角180-th)の半円を引く
    % 余りがそれ以外(0)の場合(開始角180-th、終了角360-th)の半円を引く
    j 2 mod 1 eq { x y r1 360 th sub 180 th sub arc }
     { x y r1 180 th sub 360 th sub arc } ifelse
    stroke % 弧を描画
    } for
    % 最初の弧の半径 r1 、次の週の半径r1=r1+a/2とすると
    % 次の週の同心円の半径 r0 = r0+r1+(r1+a/2)

    % 次の同心円の大きさを計算する
    /r0 r0 r1 add r1 add a 2 div add def % r0 = r0+r1+(r1+a/2)
    % 次の弧の大きさを計算する
    /r1 r1 a 2 div add def % r1 = r1+a/2
    % 変化量を増加
    /a a 6 add def % a = a+6
} for

応用例

弧の方向は同じにしています。

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

コメント

コメントする

CAPTCHA


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

目次