Sample11
to sample11 :size
(for "i 0.0 1.05 [
circle * :size i :size
] 0.05)
end
sample11 100 rt 90 sample11
100として実行しました。
球面のように見えますが、楕円を連続で描かせているだけです。
stampoval手続きでも描けますが、cirrcleを使った方が簡単になりますね。
Sample12
to sample12
local "size
make "size 5
window
repeat 18 [
repeat 8 [
penup
forward 3
pendown
stampoval :size :size
make "size (+ :size 4)
]
right 120
]
end
640 * 480
のグラフィックウインドウ内いっぱいに円を描かせました。
円が、渦を巻いている様な感じですが、三角形の辺をタートルが移動しながら描画しているので、そんな風になります。
移動する図形を、三角形以外の図形に変更したり、円を楕円や多角形に変えてみると面白いかも知れません。
Sample13
to sample13 :ring1 :ring2 [:poly 0] 2
local "step
make "step (/ 360 16)
(local "po.x "po.y)
(for "i 0 360 [
make "po.x (* :ring1 cos :i)
make "po.y (* :ring1 sin :i)
penup
setxy sentence :po.x :po.y
pendown
if :poly <> 0 [
newpoly :ring2 :poly
left :step
] [
stampoval :ring2 :ring2
]
] :step)
end
スピログラフと言う図形だそうです。K-)
円周上を図形を移動して描画しています。引数 ring1
が、移動の為の座標を求めています。
基本的に円だけで描く図形ですが、多角形でも描いてみました。
1)sample13 30 60
2)(sample13 30 60 3)
3)(sample13 30 60 6)
4)sample13 60 30
5)(sample13 60 30 4)
円と多角形では、大きさが違いますが多角形では引数
ring2 を直径としている為です。
2倍すれば、ほぼ円と同じ大きさになりますが、このままの方が面白い図形になります。
Sample14
to sample14_sub :size.x :size.y
repeat 8 [
circle size.x :size.y
right 22.5
]
end
to sample14 :size
local "current.color
make "current.color pencolor
local "reduce
name 0.42 "reduce
setwidth 8
sample14_sub * :size :reduce :size
setwidth 3
setpc "gold
sample14_sub * :size :reduce :size
setpc :current.color
setwidth 2
sample14_sub (product :size :reduce 0.4) (* :size 0.4)
setwidth 1
end
circle
のサンプルと、ほぼ一緒でしたね。:-D
単に、線の太さを変えて描いてみただけだよ。
sample14_sub (product :size :reduce 0.4) (* :size
0.4)
実は、この部分を採上げたかっただけなんです。
product と言う指示(コマンド)があります。
これ、掛算の * 演算子と一緒なんです。
詳しくは、「演算子と優先順位」の方で説明しています。
ここでは、掛算を連続でする関数として使っています。
|