はじめに
「ジャボン玉ってなんで丸いの」っていうのに疑問をいだき、
シミュレーションすることで、納得感を得た男の物語である。
「なぜシャボン玉は丸いのか」の科学的説明
なんで、シャボン玉って丸いんだろう。
そう思ったとき、google先生に聞いてみるとこんな回答が返ってきた。
表面張力によって、表面積を小さくしようとしてシャボン玉の膜は、自らを縮めようとする力が働きます。それにより、シャボン玉内の空気に圧力が働くのです。
それと同時に、空気からもシャボン玉の膜に対して力が働きます。その力が釣り合うときに、シャボン玉の大きさがある程度決まります。
そして、同じ体積の立体の中で表面積が最小なのは球であることから、シャボン玉は球の形になるのです。
(ソース)
https://nazology.net/archives/7622
何故かピンと来ない自分がいる
1つ1つのシャボン玉粒子(原子?)は、周辺の粒子と引き合ったり、内外の空気とぶつかったりしているだけで、
「球」という全体構造や、「表面積を最小にする」などと考えて行動しているわけでない。
なのになぜ、全体構造として「球体」が立ち上がってくるのか。
確かに数学的には、球が同体積でもっとも表面積が小さいというのは納得できるのだが、
それを何の気なしに行っているシャボン玉が不思議だった。
何故か、手触り感がないというか、ピンと来なかった。
ならばシミュレーションしてみよう
こんなときに、「構成論的手法」というアプローチがある。
作ってみることで、理解してみようとするアプローチである。
今回は、シャボン玉をコンピュータ上でシミュレーションすることで、
シャボン玉はなぜ丸いのかということを検証してみた。
シミュレーション環境
今回はシミュレーションに、Planck.jsというJSの2D、物体計算ライブラリーを用いてみた。
こちらExampleが丁寧に数多く用意されており触りやすかった点と、JSなので完成したものをすぐ共有できるということでこちらを使った。
https://piqnt.com/planck.js/
シミュレーション条件
1 まず、チェーンのような輪っかを作成し、それを四角においた。これが、今回シャボン玉粒子を表している。
(※ 残念ながらゴム状に縮まる素材では作れなかったが、最終的にシャボン玉は中の空気圧と、
膜の表面張力が釣り合うと考えるとその時のシャボン玉粒子の状況であると考えることができる。)
2 次に内部に、自由に動く空気分子を用意した。
コイツらはそれぞれがランダムに動き、他の空気分子やシャボン玉に衝突する。
この条件下で、自然と「円」の形にシャボン玉粒子がなれば実験は成功だ。
結果
実際にこちらにアクセスすれば、ブラウザでも動かせるので試してほしい。
https://yuto-ktok.github.io/soup_bubble/
ソースはこちらです。(動けばいい風)
https://github.com/yuto-ktok/soup_bubble
なんとまあ、円になるではないか!!!素敵すぎる!!
まとめ・所感
シャボン玉が球になることが、腑に落ちなかった自分だが、
シミュレーションしてみるときれいに円になることを再現できた。
そして、実際に動かしてみるとすごい腑に落ちた。
最初、自然界で球になることに神秘性を感じていた自分だが、
シミュレーション後には、「球になるのは必然で、むしろこちらが自然な形である」
とさえ思える。
また、物体シミュレーション初だったが、plank.jsは優秀なライブラリで直感的に動かせた。
今後も機会があったら遊んでみたい!!