飽きるまでやります。

私の私による私のためのメモ。内容に一切の責任を負えません。

フラクタルのシダ

概要

ja.wikipedia.org

en.wikipedia.org

フラクタルのシダをPythonでやってみました.Barnsleyのシダともいうらしいです.
Wikiの式をそのまま写しただけです.

結果

f:id:sdr816:20190530112303p:plain

雑な解説

 x _ {n+1} = 0
 y _ {n+1} = 0.16y _ n
1%で選択され青色の部分に相当します.

 x _ {n+1} = 0.2x _ n - 0.26y _ n
 y _ {n+1} = 0.23x _ n + 0.22y _ n + 1.6
7%で選択され赤色の部分に相当します.

 x _ {n+1} = -0.15x _ n + 0.28y _ n
 y _ {n+1} = 0.26x _ n + 0.24y _ n + 0.44
7%で選択され緑色の部分に相当します.

 x _ {n+1} = 0.85x _ n + 0.04y _ n
 y _ {n+1} = -0.04x _ n + 0.85y _ n + 1.6
85%で選択され黒色の部分に相当します.1つ前の点を縮小しちょっと傾けて見た目的に1段上にコピーします.

青色の点の一番下の点からスタートします.次にだいたい黒が選ばれると思うので,1段上の茎に相当する1点に描画します.次もだいたい黒が選ばれると思うので,更に1段上の茎に相当する1点を描画します.85%を引き続ければ一番先端の部分まで描画されます.

どこかで黒ではなく青または赤を引いた場合,座標変換され相応の場所が描画されます.つまり描画点のどこの座標にいても変換式で赤の部分に来るようになっています,はえーすっごい.

青または赤を描画したのちだいたい黒が選ばれると思うので,今度は1段上の葉に相当する1点を描画します.85%を引き続ければ縮小されながらどんどん上の段の葉が描画されます.

数式の詳細な解説は数学が得意な人がどこかでしてくれていると思います.