水槽にポトっと垂らされた色水が、モワモワーっと拡がってやがて水槽の中全体へ均等に広がり行く、そんな拡散現象ですが、あれは水分子が互いにぶつかり合って、結果それぞれが全くランダムに移動するうちに起こるのだというのを本で読んで、「へぇーっ!」っとなったら、無性に試してみたくなりました。
こういうシンプルなのをパッと試してみようと思ったら、やはりScratchです。何しろ新規作成した時点で、スプライト(画像オブジェクト)が配置されてて、わずかなブロックを追加してやるだけで、すぐに「動かしてみられる」のですから。
で、早速組んでみたのがこんなスクリプト。1分でできます。何をしているかというと・・・、
- 自分(猫のキャラクター)のクローン(複製)を300個つくる
- 300個のクローンそれぞれに、ランダムな角度を向いては、ほんの少し移動を2000回ずつ実行させる
300個というクローン数はScratchの限界によるもので。Scratchでは同時に表示できるスプライト・クローンの数の上限が約300(正確には302だったかな)になっているためです。これ以上クローンしようとしても表示されません。2000回というのは適当です。増やしたり減らしたりして色々試してみました。
大量の猫(cat)がクローンされ、同一座標上に重なって配置されます(一匹に見えるけど三百匹が重なっています)。その後まもなく、それぞれてんでにチョコチョコ動き始め、あとは確率の問題でN回移動後の座標の散らばりがどんどん大きくなっていきます。
こんな感じで、
散らばっていって、
なるほど、見事に拡散していきます。
ひとつひとつを見ると、かなりふらふらと動き回っているのですが、全体としてみると、最初の一点に重なった状態から、一貫して散らばっていくのがわかります。まなゲーらぼの子どもたちにも見せてみましたが、こういうワラワラ動くやつは見ていて楽しいらしく結構好評でした。
実物はこちらでご覧いただけます。
(Scratchはflashで動いているので基本PC限定です。windowsタブレットならいけるかも)
こういうちょっとしたシミュレーションは、実験や観察の代わりとしても面白いと思います。
また何か作ったら報告します。