to circle [:x :y rd ] ;; 円の中心座標が (:x , :y) で半径が rd
pu
set heading 90
setxy :x :y + rd
pd
repeat 360 [
fd PI * rd / 180 rt 1
]
pu
end
となる。
この手続きを利用して、1つの円の内部に、半径が 1/3 のサイズの円とそれに隣接する同サイズの6つの円を並べることを再帰的に行わせることで得られる図形を描きたい。それには、
to setup
ca
crt 1
ask turtles [setxy 0 0 circle cx cy r odr ]
end
to circle [:x :y rd :odr ]
pu
set heading 90
if :odr < 1 [stop]
setxy :x :y + rd
pd
repeat 360 [
fd PI * rd / 180 rt 1
]
let th 0
circle :x :y rd / 3 :odr - 1
repeat 6 [
circle :x + 2 * rd / 3 * cos th :y + 2 * rd / 3 * sin th rd / 3 :odr - 1
set th th + 60
]
pu
end
とすれば良い。最初の円の中心と半径、再帰の深さ(odr) は interface 上の Slider で指定できるようにする。
次は、このプログラムの実行結果で、円の中心が (0 , 0) で、半径が 16 、再帰の深さが 4 の場合である。
このプログラムのソースファイルは プログラム にある。