Sample21
to sample21 :amplitude [:seed 3.14] 1
(local "loop "step)
name 2520 "loop ; 7 * 360 = 2520
name 1.875 "step ; 180 / 96 = 1.875
(local "po.x "po.y "radius)
(for "theter 0 :loop [
make "radius (* :amplitude sin (* :seed :theter))
make "po.x (* :radius cos :theter)
make "po.y (* :radius sin :theter)
setxy sentence :po.x :po.y
] :step)
end
1)sample21 100
2)(sample21 100 100)
3)(sample21 100 cos 45)
バラ曲線を描いてみました。
forループ内で、半径 radius
が次々と変化するので、美しい図形になります。ちょうど、花びらが重なった様な感じになります。
引数 seed
に無理数(πや√2など分数の形では表せないもの)を入れると、その花びらが閉じない図形になります。
1番の図形は閉じている様に見えますが、実際は閉じていません。
Cassini
to Cassini [:testflag 0] 0
(local
"po.x "po.y
"po.x1 "po.x2
"po.x2 "po.y2
"amplitude
"cstep "ystep
)
name 100 "amplitude
name 0.25 "cstep
name 15 "ystep
(for "y.axis -100 100 [
(for "i 0 45 [
make "po.x (* * :amplitude (sqrt * 2 cos * 2 :i) cos :i)
make "po.y (* * :amplitude (sqrt * 2 cos * 2 :i) sin :i)
make "po.x1 :po.x
make "po.x2 msgn :po.x1
make "po.y1 (- :y.axis :po.y)
make "po.y2 (+ :y.axis :po.y)
if :testflag = 0 [
dot sentence :po.x1 :po.y1
dot sentence :po.x1 :po.y2
dot sentence :po.x2 :po.y2
dot sentence :po.x2 :po.y1
] [
dot sentence :po.x1 :po.y2
]
] :cstep)
] :ystep)
end
Sample22
to sample22 :amplitude [:i.step 0.25] 1
(local
"po.x "po.y
"po.xx "po.yy
"po.x1 "po.x2
"po.y1 "po.y2
"center
)
make "center getxy
(for "theter 0 180 [
(for "i 0 44.7 [
make "po.x (* * :amplitude (sqrt * 2 cos * 2 :i) cos :i)
make "po.y (* * :amplitude (sqrt * 2 cos * 2 :i) sin :i)
make "po.xx (- * :po.x cos :theter (* :po.y sin :theter))
make "po.yy (+ * :po.x sin :theter (* :po.y cos :theter))
make "po.x1 (+ item 1 :center :po.xx)
make "po.x2 (- item 1 :center :po.xx)
make "po.y1 (- item 2 :center :po.yy)
make "po.y2 (+ item 2 :center :po.yy)
dot sentence :po.x1 :po.y1
dot sentence :po.x1 :po.y2
dot sentence :po.x2 :po.y2
dot sentence :po.x2 :po.y1
] :i.step)
] 15)
end
sample22 80
CassiniとSample22は、共にカッシーニ曲線を使った図形です。
曲線を、垂直に移動したか円周上を移動させたかの違いだけです。
どちらも、画面に点を打つ DOT
命令で描かせてみました。
座標原点近くで、急激な変化が起こるので点の間隔が荒くなっています。
なんとなく和風な図形に見えません?
|