本シミュレータは、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] |
おもりの質量[kg] | |
おもりの座標[m] (x,y,z) | |
おもりの速度[m/s] (vx,vy,vz) |
おもりの質量[kg] | |
おもりの座標[m] (x,y,z) | |
おもりの速度[m/s] (vx,vy,vz) |
ひもの長さ[m] | |
ひもの張力[N] | |
最大張力[N] |
ひもの長さ[m] | |
ひもの張力[N] | |
最大張力[N] |
おもりの座標[m] | (,, ) |
おもりの速度[m/s] | (,, ) |
おもりの質量[kg] |
おもりの座標[m] | (,, ) |
おもりの速度[m/s] | (,, ) |
おもりの質量[kg] |
(※1)系のエネルギーや棒の長さは本来一定ですが、数値誤差により少しずつずれていきます。
(※2)拘束に矛盾する方向への初速度を与えると正しいシミュレーションが行われません。棒の長さが変化してしまいます。