Processingというツールをご存知でしょうか。
MITで開発されたオープンソースのグラフィックツールです。
Processing is an open source programming language and environment for people who want to program images, animation, and interactions.
そうなんです。面白いのはスクリプトで記述すること。ドラッグ&ドロップもありません。ひたすらスクリプト。しかもJavaで作られていているので構文がJavaっぽくて書きやすい(例外もJavaで吐かれるので僕にとっては分かりやすいw)。
で、ずいぶん前のエントリ「複雑系と現実(含むソフトウェア開発)」で作ったものを書き直してみました。
昆虫など世代が重ならない生物において、ある世代の個体数Nから次世代の個体数を算出する式として次が知られている。a × N × ( 1 - N )
× Nは、個体数を増やす力、× (1-N)は個体数を減らす力(増えすぎると、それはそれで困る)ということをしめす。aは定数で、バランスをしめす値になる。では、この式を用いて、ある世代の個体数から次世代の値を求め、その結果から、さらに次世代を求めて、というのを繰り返す。その場合に、定数aをちょっと変えるだけで驚くような結果が生まれる。
下のグラフは定数aをランダムで決定して描画を繰り返すものです。ルールは以下のとおり。カオス運動を行う場合だけ背景が暗くなります。
0 < a <= 1の時は、0へ収束
1 < a <= 2の時は、(a-1)/aに収束
2 < a <= 3の時は、(a-1)/aへ振動しながら収束
3 < a <= 1+√6の時は、2周期点へ振動しながら収束
a >= 3.5699456... の時は、カオス運動
うーん、楽しい(w。なんか他にも作ろーと。
