HTML5による仮想物理実験室(物理シミュレーション)

文責:遠藤理平
公開日:2016年05月21日
最終更新日:2016年12月30日

本コンテンツについて

「HTML5による仮想物理実験室(物理シミュレーション)」は、HTML5の強みを活かして物理現象を可視化することを目的として作成しています。 興味のある方は下記からダウンロード後、ご利用ください。

なぜHTML5?

 物理シミュレーション環境の構築に必要な要素として、【入力】【演算】【描画】の3つが挙げられます。これまで【入力】は各実行環境に応じたGUI、【演算】はC言語などのプログラミング言語、【描画】は二次元グラフ描写ならgnuplot、3次元グラフィックスならOpenGLというように、独立したアプリケーションをそれぞれ習得する必要がありました。
 しかしながら、HTML5の登場により、状況は劇的に変化しつつあります。【入力】はHTMLが本来得意とするインタラクティブ・インターフェース、【演算】はウェブブラウザ上で高速実行可能なJavascript、【描画】はcanvas要素によるリアルタイムな二次元ならびに三次元のグラフィックス描画と、HTML5の各要素によって、物理シミュレーション環境の構築に必要な3つの要素すべてが高レベル、かつウェブブラウザだけで完結することが可能となりました。
 さらにHTML5で作成したアプリケーションはウェブブラウザを介して様々な環境で実行することができる上に、当然ながら、HTMLの本領であるウェブ上での公開も容易です。すなわち、アプリケーションの共通プラットフォームであるHTML5の一つの応用例として、HTML5は、新しいインタラクティブな科学コミュニケーションツールとしての可能性を大きく秘めていると考えています。
 物理シミュレーションは、様々な条件で何度でも、また実際の実験系では再現の難しい条件ですらパラメータ1つで「実験」することができ、さらには様々な情報(本書では軌跡や速度ベクトル、ストロボ撮影を実装)を付加することもでき、中学校・高校・大学における物理教育にも活用できると考えています。
 プロ・アマ問わず、それぞれの方々の興味のもと物理現象の解説や発見などを発表できれば面白いなと思っています。

ダウンロード

HTML5_PHYSICS_r17.zip(2016年12月30日、16個追加)
HTML5_PHYSICS_r16.zip(2016年10月21日、62個追加)
HTML5_PHYSICS_r15.zip(2016年09月13日、剛体球の運動を5つ追加)
HTML5_PHYSICS_r14.zip(2016年09月12日、結晶構造3個追加)

注意!

ローカル環境でWebWorkersやテクスチャマッピングを行う場合、セキュリティ関連エラーが発生する可能性があります。
GoogleChromeの場合のエラー文は「'◯◯◯' cannot be accessed from origin 'null'」です。
GoogleChromeの場合、起動オプション「--allow-file-access-from-files」を設定することで回避することができます。

物理学分野ごとのサンプルプログラム

古典力学

プログラム名説明オススメ度参考
等速直線運動の時間発展 初期位置が異なる場合の運動の違いをストロボ表示。 ☆☆ 書籍 フレームワーム
重力場中の水平投射運動の時間発展 初期位置が異なる場合の運動の違いをストロボ表示。 ☆☆ 書籍 フレームワーム
単純な単振動の時間発展 バネによる単純な単振動の様子。 ☆☆ 書籍 フレームワーム
重力場中の単振動の時間発展 重力場中のバネによる単振動。 書籍
重力場中の単振動の時間発展(支点をマウスドラック可) 重力場中のバネによる単振動。時間発展中に支点をマウスドラックで移動可。 ☆☆ 書籍
減衰振動運動シミュレーション バネによる減衰振動。 ☆☆ 書籍
重力場中の減衰振動運動シミュレーション 重力場中のバネによる減衰振動。 ☆☆ 書籍
強重力場中の制振動運動シミュレーション 重力場中のバネによる制振動運動。共鳴状態の時間発展。 ☆☆ 書籍
支柱が固定された振り子運動 重力場中の伸び縮みのしない紐による振子運動。 ☆☆☆ 書籍
支柱が固定された振り子運動(初速度が与えられた場合) 重力場中の伸び縮みのしない紐による振子運動。支柱に向かう方向とは垂直な方向の初速度を与えた場合。 ☆☆☆ 書籍
支柱が固定された振り子運動(異なる初期角度の運動の比較) 重力場中の伸び縮みのしない紐による振子運動。異なる初期角度の運動の時間発展を比較。 ☆☆ 書籍
長さの異なる振り子運動のシミュレーション 重力場中の伸び縮みのしない紐による振子運動。長さの異なる振り子運動の時間発展を比較。 ☆☆ 書籍
振り子の強制振動運動のシミュレーション 重力場中の伸び縮みのしない紐による振子運動。支柱を周期的に水平に振ることで強制振動させる。 ☆☆☆☆ 書籍
経路を円形に拘束された球の運動シミュレーション 重力場中の球の運動を円形経路に固定した周期運動。 ☆☆☆☆ 書籍
経路を放物線に拘束された球の運動シミュレーション 重力場中の球の運動を放物線経路に固定した周期運動。 ☆☆☆☆ 書籍
経路を楕円形に拘束された球の運動シミュレーション 重力場中の球の運動を楕円形経路に固定した周期運動。 ☆☆☆☆ 書籍
経路をサイクロイド曲線形経路に拘束された球の運動シミュレーション 重力場中の球の運動をサイクロイド曲線形経路に固定した周期運動。 ☆☆☆☆ 書籍
経路に拘束された球の運動シミュレーション(サイクロイド曲線/円/楕円/2次方程式の比較) 重力場中の球の運動を指定した任意の経路上を固定した周期運動。サイクロイド曲線、円、楕円、2次方程式を比較した様子。 ☆☆☆☆☆ 書籍
2重振り子シミュレーション 重力場中にて伸び縮みのしない紐で繋がれた2つの振り子の運動。任意の初期値に対する時間発展を計算。 ☆☆☆ ウェブページ
粘性抵抗力と慣性抵抗力の定義とグラフ 空気抵抗力シミュレーション1:空気抵抗力の定義 ☆☆ ウェブページ
1.空気抵抗力シミュレーション(空気分子間衝突:無)&速度・摩擦係数の時系列データ
2.空気抵抗力シミュレーション(空気分子間衝突:有)&速度・摩擦係数の時系列データ
空気抵抗力シミュレーション2:剛体球モデルによる粘性抵抗係数と慣性抵抗係数の見積もり
→ 剛体球モデルでは慣性抵抗力のみで粘性抵抗力は存在しない。
☆☆☆ ウェブページ
1.空気抵抗力シミュレーション(空気分子間衝突:無)&速度・摩擦係数の時系列データ
2.空気抵抗力シミュレーション(空気分子間衝突:有)&速度・摩擦係数の時系列データ
空気抵抗力シミュレーション3:ファン・デル・ワールス力モデルによる粘性抵抗係数と慣性抵抗係数の見積もり
→ 引力が粘性抵抗力の起源。
☆☆☆☆ ウェブページ
空気抵抗力シミュレーション(空気分子間衝突:無)&速度・摩擦係数の時系列データ 剛体球回転モデルによるカーブの実験 ☆☆☆☆ ウェブページ
フーコーの振り子(カメラ位置座標をローカル座標に固定)
フーコーの振り子(カメラ位置座標をグローバル座標に固定)
コリオリ力が働いても単振動させるための初期値を与えた場合(カメラ位置座標をグローバル座標に固定)
コリオリ力による運動(フーコーの振り子)の可視化。 ☆☆☆ ウェブページ

波動論

プログラム名説明オススメ度参考
1次元拡散方程式の解析解 ガウス分布している拡散粒子の分布密度の時間発展をグラフで表示。WebWorkers利用。 ☆☆☆ 書籍
2次元拡散方程式に対するノイマン境界条件とディリクレ境界条件 ノイマン境界条件とディリクレ境界条件を切り替えて時間発展を計算 ☆☆ 書籍
2次元拡散方程式の数値解 水中に置いた銅板に点熱源を与えた時の温度変化の時間発展を計算。 ☆☆☆☆☆ 書籍
1次元波動方程式の時間発展の解析解 ガウス分布している変位の時間発展をグラフで表示。WebWorkers利用。 ☆☆ 書籍
2次元波動方程式の数値解 ガウス分布している変位の時間発展を計算。 ☆☆☆☆☆ 書籍
2次元波動方程式の数値解(回折現象) 2重スリットを通過する平面波の回折現象をシミュレーション。 ☆☆☆ 書籍
2次元波動方程式の数値解(ドップラー現象) 点波源を移動させた時のドップラー現象をシミュレーション。 ☆☆☆ 書籍
異なる媒質に入射した平面波の時間発展 異なる媒質に入射した平面波に対する透過波・反射波の解析解をそれぞれ表示。 ☆☆ 書籍
異なる媒質に入射したパルスの時間発展 異なる媒質に入射したパルスの解析解を表示。 ☆☆☆☆☆ 書籍
2次元平面波ビューア 2次元平面波を特徴づける進行方向(角度)、波長、周波数を指定可能。 ☆☆☆☆ 書籍
円形膜の基準振動ビューア 波動方程式の解であるベッセル関数のゼロ点を表す指数を指定可能。 ☆☆☆☆☆ ウェブページ
音波生成器(単一周波数) 単一周波数の音波生成と時間グラフの描画。 ☆☆ 書籍
音波生成器(うなりの確認) 指定した2つの周波数の音波の重ねあわせの生成と時間グラフの描画。 ☆☆ 書籍
様々な調の各音階の音声データ生成と再生 指定した調の音階の音声データの生成&再生並びに周波数グラフの描画。 ☆☆☆ 書籍

電磁気学

プログラム名説明オススメ度参考
点電荷による電気力線の可視化 4つの点電荷(四極子)による電気力線。 ☆☆ グラフ
2つの点電荷(正と負)による静電ポテンシャルの可視化 2つの点電荷(正と負)による静電ポテンシャルの高低をz軸方向で表現。 ☆☆ グラフ
コンデンサー風電荷配置による静電ポテンシャルの空間分布 正負の点電荷を2列並べた時の静電ポテンシャルの高低をz軸方向で表現。 ☆☆ グラフ
サイクロトロン運動シミュレーション 空間分布が一様な静磁場中を運動する荷電粒子の時間発展。異なる初速度による運動を比較。 ☆☆☆☆ ウェブページ
ラザフォード散乱の散乱角のグラフ(衝突径数 vs. 散乱角) 荷電粒子同士がクーロン力によって散乱される運動。 ☆☆☆☆ ウェブページ
ラザフォード散乱シミュレーション ラザフォード散乱運動の時間発展を計算。荷電粒子の初速度、電荷を指定可能。 ☆☆☆☆ ウェブページ
ラザフォード散乱シミュレーション(静電ポテンシャル表示付き) ラザフォード散乱運動の時間発展を計算。ターゲット荷電粒子が作る静電ポテンシャルに沿った運動を行う。 ☆☆☆☆☆ ウェブページ
円形誘電体に平面波を照射したシミュレーション 2次元FDTD法による電磁場シミュレーションのリアルタイムレンダリング。境界条件にPMLを採用。 ☆☆
電磁波の透過係数と反射係数の角度依存性 異なる媒質境界に照射された電磁波の透過係数と反射係数の角度依存性をグラフ化。屈折率を指定可。 ☆☆☆ ウェブページ
異なる媒質境界に照射された電磁波の空間分布(入射波/反射波/透過波の可視化) 異なる媒質境界に照射された電磁波の空間分布。両媒質の屈折率、入射角度を指定可能。入射波・反射波・透過波をそれぞれ表示可能。 ☆☆☆☆ ウェブページ
薄膜に対する電磁波の透過係数と反射係数の角度依存性 異なる媒質境界に照射された電磁波の透過係数と反射係数の角度依存性をグラフ化。屈折率、薄膜の厚さを指定可。 ☆☆☆ ウェブページ
薄膜に対する電磁波の透過係数と反射係数の波長依存性 異なる媒質境界に照射された電磁波の透過係数と反射係数の角度依存性をグラフ化。屈折率、入射角度、薄膜の厚さを指定可。 ☆☆☆ ウェブページ
可視光スペクトル コンピュータ・グラフィックスなどで光の波長から描画色(RGB値)を決定したいときに利用する関数「waveLengthToRGB関数」のテスト。 ☆☆ ウェブページ
単スリットによる回折パターン 単スリットに入射した可視光の回折パターンと空間強度分布グラフ化。スリットからスクリーンまでの距離、スリットの幅、光の波長を指定可。 ☆☆☆☆
2重スリットによる回折パターン(ヤングの干渉実験?) 2重スリットに入射した可視光の回折パターンと空間強度分布グラフ化。スリットからスクリーンまでの距離、スリットの幅、2重スリットの間隔、光の波長を指定可。 ☆☆☆☆
ヤングの干渉実験(単スリット&2重スリットによる回折パターン) 単スリットを通過させた後に2重スリットを通過させたことで生じる回折光の重ねあわせで生じる干渉の描画と空間強度分布グラフ化。スリットからスクリーンまでの距離、スリットの幅、2重スリットの間隔、光の波長を指定可。 ☆☆☆☆

統計力学

プログラム名説明オススメ度参考
2次元ランダムウォーク 2次元ランダムウォーク。2次モーメントをリアルタイムに計算。
2次元自己回避ランダムウォーク 2次元自己回避ランダムウォーク。2次モーメントをリアルタイムに計算。
ポテンシャル中を運動するブラウン粒子シミュレーション ランジュバン方程式によるブラウン粒子の時間発展を計算。
雪の結晶シミュレーション(2次元DLA) 結晶成長の単純なモデルである拡散律則凝集のシミュレーション。 ☆☆☆ ウェブページ

量子力学

プログラム名説明オススメ度参考
自由空間中の電子パルス 自由空間中の電子パルスを、波数分布関数としてガウシアン(正規分布)を与えた平面波の重ね合わせで表現したときの実空間と波数空間のグラフ。パラメータとして、ガウス分布の幅(σ)、ガウス分布の中心波数(k0)、実空間における波束の中心(x0)を指定可能。 ☆☆
自由空間における電子パルスの時間発展 自由空間中の電子パルスの時間発展を計算(機能強化版録画機能あり)。 ☆☆
水素原子の波動関数ビューア 水素原子様ポテンシャルの1電子解析解に対する確率密度の点描画。 ☆☆☆ ウェブページ
電子パルスのトンネル効果 電子パルスをポテンシャル障壁へ照射した時のトンネル効果の結果を描画(解析解)。読み込みに時間が掛かるため気長に待つ必要あり。 ローカルで実行するには別途データダウンロードが必須。 ☆☆☆☆☆ 動画
水素原子の電子軌道(d_z^2軌道)不透明版 水素原子の電子軌道の3次元空間分布をx平面、y平面、z平面上のカラーマップで表現。マウスドラックでカラーマップ面を移動可能。 ☆☆☆☆ ウェブページ
プランクの法則の解析解と黒体放射 プランクの法則の解析解のグラフ描画結果と黒体放射のスペクトルを描画。 ☆☆ ウェブページ

物性物理学

プログラム名説明オススメ度参考
単純立方格子とその単位セル 結晶格子構造の一つである単純立方格子の可視化。 ウェブページ
体心立方格子とその単位セル 結晶格子構造の一つである体心立方格子の可視化。 ウェブページ
面心立方格子とその単位セル 結晶格子構造の一つである面心立方格子の可視化。 ウェブページ
六方最密格子とその単位セル 結晶格子構造の一つである六方最密格子の可視化。 ウェブページ
ダイヤモンド格子 結晶格子構造の一つであるダイヤモンド格子の可視化。 ウェブページ
1.単純立法格子
2.体心立法格子
3.面心立方格子
4.六方最密格子
5.ダイヤモンド格子
結晶格子構造の基本構造の最近接結合と第二近接結合の可視化。 ☆☆☆ ウェブページ
1.固有モードシミュレーション
1.フォノン分散関係のグラフ(解析解)
2.フォノンの解析解アニメーション
1原子フォノン(格子振動)のシミュレーション・解析解・アニメーション ☆☆ ウェブ1
ウェブ2
1.フォノンの解析解アニメーション(音響モード・光学モード)
2.フォノン分散関係のグラフ(解析解)
3.第一原子と第二原子の振幅比のグラフ(解析解)
4.フォノンの解析解アニメーション
2原子フォノン(格子振動)のシミュレーション・解析解・アニメーション ☆☆☆☆☆ ウェブ1
ウェブ2
ウェブ3

物理数学

プログラム名説明オススメ度参考
テーラー展開の様子 テーラー展開の項数を増加させるほどsin関数に近づいていく様子を確認。 書籍
sin関数によるデルタ関数の描画 sin関数の振動数を増加させるほどデルタ関数に近づいていく様子を確認。 ☆☆ 書籍
矩形関数のフーリエ級数展開 矩形関数のフーリエ級数展開。 ☆☆☆ 書籍
ステップ関数のフーリエ級数展開 ステップ関数のフーリエ級数展開。 ☆☆☆ 書籍
ガウス分布のフーリエ級数展開 ガウス分布のフーリエ級数展開。 ☆☆☆ 書籍
シンプソン法による積分(sin関数) 積分計算アルゴリズム「シンプソン法」による数値積分。解析解との差も表示。 ☆☆☆ 書籍
平面波の時間発展
平面波の重ね合わせによる波束の生成
波数分布関数がガウシアン(正規分布)の場合
ガウシアンパルスの時間発展(分散関係:β項のみ)
ガウシアンパルスの時間発展(分散関係:α項のみ)
量子力学を理解するために必要な波動論の復習用。 ☆☆☆☆ ウェブ1 ウェブ2 ウェブ3 ウェブ4

物理シミュレータ開発のための要素技術

プログラム名説明オススメ度参考
古典ルンゲ・クッタ法(4次の精度)による積分テスト
古典ルンゲ・クッタ法によるニュートンの運動方程式の数値計算
古典ルンゲ・クッタ法(4次の精度)を利用するためのテスト。 ウェブ1
ウェブ2
1.高速フーリエ変換のテスト(矩形関数)
2.高速フーリエ変換のテスト(係数の定義範囲の変更)中心をずらした矩形関数
3.2次元高速フーリエ変換のテスト(矩形関数)ガウス関数
高速フーリエ変換を利用するためのテスト。高速フーリエ変換(FFT)ライブラリの紹介はこちら ☆☆☆ ウェブ1
ウェブ2
ウェブ3
1.斜面を滑る場合(摩擦力0)RK4版
2.曲面を滑る場合(摩擦力0)RK4版
3.斜面を滑らずに転がる場合(摩擦力∞)RK4版
4.曲面を滑らずに場合(摩擦力∞)RK4版
5.斜面を滑りながら転がる場合(静止摩擦力+動摩擦力)RK4版
6.曲面上を滑りながら転がる場合(静止摩擦力+動摩擦力)
7.静止摩擦力+動摩擦力+空気抵抗力+転がり摩擦抵抗力
重力場中の任意の曲面上を滑りながら転がる剛体球の運動をシミュレーション。 ☆☆ ウェブ1
ウェブ2
ウェブ3
ウェブ4
ウェブ5
ウェブ6
ウェブ7
1.斜面と衝突する場合(回転なし)曲面の場合
2.斜面と衝突する場合(回転あり)(メモ:エネルギー保存則なし)
3.他の剛体球と衝突する場合(回転なし)
4.複数の剛体球と同時衝突(回転なし)重力ありの場合
5.斜面に接触中の剛体球に衝突した場合(回転なし)(メモ:エネルギー保存則を満たすように要改善)
6.他の剛体球と衝突する場合(回転あり)(メモ:エネルギー保存則なし)
7.固定された剛体球に衝突した場合(回転あり)
8.斜面と衝突する場合(エネルギー保存則を考慮して回転による推進力を計算)
9.他の剛体球と衝突する場合(エネルギー保存則を考慮して回転による推進力を計算)
10.任意の経路に拘束された剛体球の運動
斜面や剛体球同士と衝突する剛体球の運動をシミュレーション。
回転までを考慮した力学的エネルギー保存則を満たす計算アルゴリズムはウェブ・書籍を含めて情報がないため、必要な方にとっては有用。
☆☆☆☆ ウェブ1
ウェブ2
ウェブ3
ウェブ4
ウェブ5
ウェブ6
ウェブ7
ウェブ8
ウェブ9
ウェブ10
1.2つの質点がばねで結合された系(ばね自然長0)
2.3つの質点がばねで結合された系(ばね自然長0)
3.2つの質点が自然長が有限のばねで結合された系
4.3つの質点が自然長が有限のばねで縦一列に結合された系(固有振動の可視化)
様々な力による物理シミュレーション1:弾性力による運動 ウェブページ
1.2つの質点が万有引力で引き合う系
2.3つの質点が万有引力で引き合う系
様々な力による物理シミュレーション2:万有引力による運動 ウェブページ
1.2つの電荷がクーロン力で引き合う系
2.原子の古典的描像(陽子が複数の原子束縛する系 → 全然安定しません)
様々な力による物理シミュレーション3:クーロン力による運動 ウェブページ
1.レナード・ジョーンズポテンシャルの距離依存性グラフ
2.2つの粒子がレナード・ジョーンズ相互作用する系
3.多数の粒子がレナード・ジョーンズ相互作用する系
4.多粒子の安定構造へ落ち着くまでのシミュレーション(六方最密充填構造への移行)
様々な力による物理シミュレーション4:レナード・ジョーンズ相互作用による運動 ☆☆☆☆ ウェブページ
1.万有引力+レナード・ジョーンズ斥力
2.万有引力+剛体衝突力
様々な力による物理シミュレーション5:万有引力+斥力(衝突力) ☆☆☆ ウェブページ
結合された剛体球の運動をシミュレーション
様々な力による物理シミュレーション6:剛体棒で結合された結合力 ☆☆ ウェブページ
1.4つの剛体球が剛体棒で結合された系
2.1つの剛体に複数の剛体棒で結合された系
3.複数の剛体に複数の剛体棒で結合された系
様々な力による物理シミュレーション7:任意の剛体棒で結合された結合力 ☆☆☆☆ ウェブページ
1.2重振り子
2.ニュートン振り子
様々な力による物理シミュレーション8:剛体棒による結合された剛体球+重力の系 ☆☆☆☆ ウェブページ
力学的エネルギー保存則を満たした複数剛体球の同士衝突(回転あり) 斜面を転がる剛体球運動の計算アルゴリズム17:力学的エネルギー保存則を満たした複数剛体球の同士衝突(回転あり) ウェブページ
拘束された剛体球に衝突する剛体球(回転あり) 2 斜面を転がる剛体球運動の計算アルゴリズム17:力学的エネルギー保存則を満たした複数剛体球の同士衝突(回転あり) ☆☆ ウェブページ

その他

プログラム名説明オススメ度参考
ライフゲーム セル・オートマトンの有名な数理モデルの一つ。単純なルールの奥に潜む創造を絶する様々な安定解は多くの人の心を捉えて離しません。 ☆☆

備考

動作環境

HTML5が動作する最新ウェブブラウザ。ただし、一部の機能は「Google Chrome」のみで動作。
◎ Google Chrome 35(全機能動作)
◎ Opera 26(全機能動作)
◯ Mozilla Firefox 32(動画生成不可)
△ Internet Explorer 11(動画生成不可・画像ダウンロード不可)

ライセンス

ライセンスについては現在検討しております。
ご利用等をご希望方は以下のメールアドレスよりご連絡ください。


問い合わせ

作者:遠藤理平
mail:info@natural-science.or.jp