金沢大学 国際基幹教育院様からのご依頼で、簡易的な物理シミュレーターを制作いたしました。
今回制作したのは、ワイングラスの共振シミュレーター。オンライン上で動き、講義で学生さんが個々にアクセスして実験を行えるような物を、というご要望でした。
声でグラスを割る映像をご覧になったことはあるでしょうか? 物には固有振動数というものがあり、この振動数の刺激を受けると、大きく振動(共振)します。グラスの固有振動数に近い音波を与え続けると、グラスが激しく振動してやがて割れてしまいます。
この現象をブラウザ上で再現したのが今回のシミュレーターです。正確な物性のシミュレーションではなく、あくまで固有振動で割れるという現象をシミュレーションしたものです。
予め固有振動数と振幅の閾値を設定しておき、条件に合致する音波を与え続けると、ワイングラスが割れたと判定します。
画面表示はCanvasで、音波の振動数と振幅、ワイングラスの位置を操作でき、パラメーターに応じた波形がアニメーションで表示されます。また、Web Audio APIを用いて音も鳴るようにしました。波形は表示非表示の切り替えも可能です。
音波は距離によって減衰するため、以下の式に従って描画しています。
(x はワイングラスの位置、A は振幅、λ は波長、t は時間、T は周期。また、D は振幅が1/2になる距離の定数)
また、音は空気中を秒速約340mという速さで進むため、ほとんど誤差の範囲ですが、途中で振幅や振動数を変更した場合は、ちゃんと変化した波が時間とともに進んでいくように工夫しています(変更した瞬間にすべての位置の波の変位が切り替わるのではないということです)。
音波の振動数がワイングラスの固有振動数に近づくと、グラスは大きく振動し、一定の振幅以上の固有振動が五秒続くと、破片が飛び散るアニメーションと共に割れます。さらに割れる際には「パリン」という音も再生されます。
固有振動数や設定可能な値の範囲などの定数は、別ファイルで管理して自由に変更できるようになっているため、複数パターンのシミュレーターを設置することも可能です。
実際に動いている動画を用意したので、御覧ください。
このように簡易的ですが、実用的なシミュレーターを作ることができたと思います。パラメーターをリアルタイムで変更できるので、ゲーム感覚でシミュレーションすることができます。
弊社としてもこれまでにない挑戦的な制作物となりました。このような機会を与えていただいた金沢大学様には感謝いたします。