2013年3月4日月曜日

[ドリトル] 三角関数で謎な図形

無限ブログの記事で面白いのを見つけた。


aTurtle =Turtle ! create (blue) linecolor 1 linewidth。
aTurtle ! penup 200 200 moveto pendown.
[ | i |
 aTurtle ! 5 forward (90 * sin(i)) rightturn.
] ! 3000 repeat.



なんだこれは???


少しずつ描いてみる

先ほどの図形を途中まで描いてみよう。
aTurtle =Turtle ! create (blue) linecolor 1 linewidth。
aTurtle ! penup -200 200 moveto pendown.
[ | i |
 aTurtle ! 10 forward (90 * sin(i)) rightturn.
] ! 90 repeat.

aTurtle ! penup -60 200 moveto pendown 0 direction.
[ | i |
 aTurtle ! 10 forward (90 * sin(i)) rightturn.
] ! 180 repeat.

aTurtle ! penup 200 200 moveto pendown 0 direction.
[ | i |
 aTurtle ! 10 forward (90 * sin(i)) rightturn.
] ! 360 repeat.


左から 90 step まで、180 step まで、360 step までを描いてみた。
sin(90) まで値が大きくなりターンする角度が大きくなるにしたがって巻きがきつくなる。
90 を超えると徐々に巻きが緩くなり、180 を超えて sin 値が負に転ずると、
左曲りになり、それまでと対称な図形が描かれていく様子がわかる。
360 を超えると0からの繰り返しになる。


変形してみる

この図形は、「 90 * sin(i) 」の部分が全体の形に大きく影響している。
この値によって 180 step 進んだ時のタートルの向きが変わるので、 少し値が変わるだけで繰り返し方が変わってくる。
89
aTurtle =Turtle ! create (blue) linecolor 1 linewidth。
aTurtle ! penup -200 200 moveto pendown.
[ | i |
 aTurtle ! 5 forward (89 * sin(i)) rightturn.
] ! 180 repeat.

aTurtle ! penup -100 200 moveto pendown 0 direction.
[ | i |
 aTurtle ! 5 forward (89 * sin(i)) rightturn.
] ! 3000 repeat.
値が1減っただけなのだが、180 step 時の戻りが緩くなったため全体的に緩い図形になり進行方向も変わっている。
94 では交差しながら進んでいく。 94


もう少し細かく見てみる

90近辺をもう少し細かく見てみる。90.2 まで増やすと戻りがややきつくなり、 重なりながら進行するようになる。

90.321 で 180 step で90度向きを変えて開始点に戻るようになり、繰り返しても進まないようになった。
90に限らずほかの値でも繰り返し同じことが起きる。11.79 だと 1 step 毎の向きの変わり具合が小さいので 巻きが緩くなるが、開始点に戻って進まないようになる。
一番最初の原点回帰は 2.405 近傍。ちょうど一周して戻ってくる。
次は 5.52 近傍で一回余計に回って戻ってくるようになる。下の図は 2.405 のもの。
多分、
みたいな式を極小化する A を求めれば回帰するところがわかると思う。
(式中の sin は radian じゃなくて degree )

0 件のコメント:

コメントを投稿