HTML5による物理シミュレーション〜2重振子シミュレータ〜

本シミュレータは、HTML5(canvas要素)+WebGL(Three.jsライブラリ)を用いて、プラグインなし実行することができます。 ただし、クライアントサイドのブラウザとグラフィックカードが、HTML5とWebGLに対応している必要があります。

本シミュレータの特徴

(1)直交座標系で記述した2重振子を4次のルンゲクッタを用いてJavascriptで計算しています
(2)計算結果をリアルタイムにcanvas要素にWebGLを用いて描画しています (canvas要素はjavascriptで動的に生成されています)
(3)グラフ描画ライブラリ flotr2 を利用して、おもりの位置(z座標)とひもの張力をリアルタイムにグラフ描画します
(4)マウスドラックとマウスホイールで視点を移動することができます
(5)各物理量がリアルタイムに表示されます
(6)「スタート」ボタンを押すと、シミュレーションを開始します
(7)「ストップ」ボタンを押すと、仮想物理実験室の時間がストップします
(8)「リセット」ボタンを押すと、フォームで設定した初期条件にてスタートします
(9)「出力」ボタンを押すと、その時刻までの「時間」「張力」「z座標」のスペース区切りのデータを出力します
(10)拘束と矛盾する初速度を与えると発散します → 確かめてみてください(例えば、(vx,vy,vz)=(0,10,0)を与えると紐が伸びます)
【参考ページ】 HTML5による物理シミュレーション環境の構築 〜WebGLライブラリThree.js 入門(1/3)〜


ステータス

時刻[s]
エネルギー[J]

おもり1

おもりの質量[kg]
おもりの座標[m]
(x,y,z)
おもりの速度[m/s]
(vx,vy,vz)

おもり2

おもりの質量[kg]
おもりの座標[m]
(x,y,z)
おもりの速度[m/s]
(vx,vy,vz)

ひも1

ひもの長さ[m]
ひもの張力[N]
最大張力[N]

ひも2

ひもの長さ[m]
ひもの張力[N]
最大張力[N]

再設定: 計算結果のの出力:

おもり1

おもりの座標[m](,, )
おもりの速度[m/s](,, )
おもりの質量[kg]

おもり2

おもりの座標[m](,, )
おもりの速度[m/s](,, )
おもりの質量[kg]

(※1)系のエネルギーや棒の長さは本来一定ですが、数値誤差により少しずつずれていきます。
(※2)拘束に矛盾する方向への初速度を与えると正しいシミュレーションが行われません。棒の長さが変化してしまいます。