「なぜ煙はそんな軌跡を描くのか」をプログラミングで再現してみた

写真拡大

風車で火災が発生した。真っ黒い煙を出しながらもそれは動き続けている。すると次の瞬間、煙は美しい「らせん」を描くようになった──。この不思議な現象を再現した。

上の動画の注目すべき点は、煙がらせん状になっていることにある。その理由は、「風車の回転」と「横からの風」という条件が重なったことにある。

「「なぜ煙はそんな軌跡を描くのか」をプログラミングで再現してみた」の写真・リンク付きの記事はこちら

まずはモデル化してみよう

この現象をプログラミング言語「Python」(パイソン)でモデル化してみよう。そして「VPython」を使って3次元で視覚化してみよう。

VPythonの素晴らしいところは、素早く簡単に3Dオブジェクトを生成できることだ。ここでは、風車全体をモデル化するのではなく1枚の羽根だけに注目してみる。

羽根の動きを考えよう

羽根の長さ(L)から、ハブ(hub)に対しての羽根の先端の位置(tip)が決まる。ハブから先端へのヴェクトルを用いて、羽根を描ける。羽根に関して考えられるプロパティは、以下の3つである。

blade.pos.:羽根の片側の点(灰色)blade.axis.:その反対側の点(青色)blade.radius.:円柱の半径(L)

では一体、羽根はどのように回転するのだろうか? 答えはかなりシンプルだ。羽根の向きと位置は「ハブと羽の先端の位置」に依存する。先端については、角度θからその位置が求められる。それがわかれば、ただ羽根を回せばいい。

コードをつくろう

さて、お次はコードだ。コードを走らせるには、〈PLAYボタン〉をクリックしてみてほしい。

しかし、これではまだ上の動画を再現できてはいない。以下の通り、いくつかの修正が必要だ。

横向きから見えるように、風車の向きを変えるハブの位置をx軸方向に動かす(ハブを動かすことで風を再現する)「カメラ」を動かし、動くハブの隣をキープするようにする(そうするとハブは静止し、煙が動いているように見える)

さて、これでプログラムに「風」が追加された。PLAYボタンをクリックして、動きを見てみよう。

かなりよくなったのではないだろうか? 動画で見たらせん状の煙は、「風車の回転」と「風」という2つの条件の組み合わせだということも、これで理解できるだろう。

RELATED