HOME > natural science Laboratory > コンピュータ・シミュレーション講座 > 仮想物理実験室

「HTML5による物理シミュレーション 【剛体編】」 出版決定(発売日:2014年8月24日)

文責:遠藤 理平 (2014年8月20日) カテゴリ:仮想物理実験室(277)

978-4-87783-350-3.png

HTML5による物理シミュレーション 【剛体編】
物理エンジンの作り方(1)

著者 遠藤 理平
出版社 株式会社カットシステム
発売日 2014年8月24日
判型 B5変型判、464頁
本体価格 4,500円(税込 4,860円)
ISBN 978-4-87783-350-3

はじめに

 本書は、HTML5を利用しウェブブラウザのみで完結した物理シミュレーション環境(仮想物理実験室)の構築手法と物理学の基礎を実践を交えながら習得することを目的とした『HTML5による物理シミュレーション』、『HTML5による物理シミュレーション【拡散・波動編】』の続編です。上記2冊では、物理シミュレーションに必要な要素である【入力】【演算】【描画】を実現するためのHTML5の機能の習得と、それらを用いた物理シミュレーション環境の構築方法を解説することが主題であったのに対して、本書は物理学で取り扱う最も基本的な対象物のひとつである「剛体」の運動をシミュレーションするために必要な数値計算を本格的に実装していくことに主眼を置きます。特定の剛体運動に限ったシミュレーションではなく、できる限り汎用的な剛体運動に関する物理シミュレーションを実現するためのライブラリとなる「物理エンジン」の開発を行います。

 本書の目的は2つです。1つ目は、物理シミュレーションを作成することは、物理学並びに数学の学習効果を高める非常に有効な手段であるということを実感してもらうことです。物理シミュレーションを作成するには高等学校までで学習する数学分野を広範囲に渡って理解している必要があります。具体的には、位置や速度を表現するベクトルと三角比と座標系(直交座標系、極座標系)、姿勢を表現する行列、運動の法則を表現する微分と積分、衝突を判定する幾何学(図形と方程式)などです。また、シミュレーション結果が正しいことを確認するには指数関数や対数関数の理解も欠かせません。もちろん物理学の理解も不可欠です。そして、運動を記述する方程式をコンピュータで数値計算させるためのプログラムソースへ変換する際に、数式の意味や演算に誤解やミスがちょっとでもあると、シミュレーション結果は非物理的な振る舞いを起してしまいます。つまり、物理シミュレーションを作成することは、物理が分かったつもりになっている領域をあぶり出すリトマス試験紙的な役割を果たすことになります。
 2つ目は、物理シミュレーションを物理教育の現場で教材としての利用価値を感じてもらうことです。物理学は自然現象を対象としている学問であるにも関わらず、高等学校などで実際に実験系を構築することは容易では無いため敬遠されがちです。例えば物理学を学習する際の最初のテーマである自由落下運動の実験系ですら相応の精度を確保して構築することは簡単ではありません。そのため、物理学の授業が教科書と先生の説明だけに頼ることになってしまう結果、物理学に対する「実感」が不十分のままになってしまいます。この傾向は、力学の次に学習する電場や磁場、分子運動論など、目では直接見ることのできない現象に対してより顕著になると考えられます。それに対して、物理シミュレーションは、様々な条件で何度でも、また実際の実験系では再現の難しい条件ですらパラメータ1つで「実験」することができ、さらには様々な情報(本書では軌跡や速度ベクトル、ストロボ撮影を実装)を付加することもでき、物理教育にも有用であると考えられます。昨今の教材のデジタル化の流れの中でタブレット型などの端末の普及がますます進む中で、様々な環境で実行可能なHTML5で物理シミュレーションが実現できることも実用的であると考えられます。

 本書を通じて、HTML5によるアプリケーション開発、数学や物理学に興味を持つきっかけや、物理教育の一助になれば、筆者としてこれほどの喜びはありません。なお、筆者の勉強不足のために、プログラムや数学、物理学の説明に間違いが有るかもしれません。その際はお手数ですが、ご指摘いただければ幸いです。

 最後に、本書の執筆の機会を頂きました株式会社カットシステムの石塚勝敏さん、丁寧な編集を行なって頂きました武井智裕さん、また、日常的に議論に付き合って頂いている特定非営利活動法人natural scienceの皆さんには、深く感謝申し上げます。

2014年8月 遠藤理平


目次

  • 第1章 仮想物理実験室の創造
    • 1.1 仮想物理実験室の設計
      • 1.1.1 仮想物理実験室の概要
      • 1.1.2 仮想物理実験室のHTML文書構造
      • 1.1.3 仮想物理実験室オブジェクトの生成
      • 1.1.4 3次元オブジェクトの生成
      • 1.1.5 PhysLabクラス
      • 1.1.6 PhysObjectクラス
    • 1.2 PhysLabクラスの実装
      • 1.2.1 コンストラクタ
      • 1.2.2 setParameterメソッド
      • 1.2.3 startLabメソッド
      • 1.2.4 createPhysObjectメソッド
      • 1.2.5 initEventメソッド
      • 1.2.6 switchButtonメソッド
      • 1.2.7 init3DCGメソッド
      • 1.2.8 initThreeメソッド
      • 1.2.9 initCameraメソッド
      • 1.2.10 initLightメソッド
      • 1.2.11 initDraggメソッド
      • 1.2.12 マウスドラッグ関連メソッド
      • 1.2.13 loopメソッド
      • 1.2.14 checkFlagsメソッド
      • 1.2.15 timeEvolutionメソッド
      • 1.2.16 makePictureメソッド
    • 1.3 PhysObjectクラスの実装
      • 1.3.1 コンストラクタ
      • 1.3.2 setParameterメソッド
      • 1.3.3 resetParameterメソッド
      • 1.3.4 create3DCGメソッド
      • 1.3.5 getGeometryメソッド
      • 1.3.6 getMaterialメソッド
      • 1.3.7 createメソッド
      • 1.3.8 updateメソッド
      • 1.3.9 updateLocusメソッド
      • 1.3.10 updateVelocityVectorメソッド
      • 1.3.11 updateBoundingBoxメソッド
      • 1.3.12 timeEvolutionメソッド
      • 1.3.13 computeTimeEvolutionメソッド
      • 1.3.14 getForceメソッド
      • 1.3.15 computeInitialConditionメソッド
      • 1.3.16 getEnergyメソッド
      • 1.3.17 initDynamicDataメソッド
      • 1.3.18 recordDynamicDataメソッド
      • 1.3.19 getCommonPropertyメソッド
    • 1.4 PhysObjectクラスの派生クラス
      • 1.4.1 Sphereクラス(球オブジェクト)
      • 1.4.2 Floorクラス(床オブジェクト)
      • 1.4.3 Axisクラス(軸オブジェクト)
      • 1.4.4 3次元オブジェクトのクローン生成
    • 1.5 3次元グラフィックスのパラメータ
      • 1.5.1 カメラの設定
      • 1.5.2 光源の設定
      • 1.5.3 シャドーカメラとシャドーマップの設定
      • 1.5.4 バウンディングボックスの可視化
      • 1.5.5 材質オブジェクトの種類
      • 1.5.6 フラットシェーディングとスムースシェーディング
      • 1.5.7 セグメント分割数について
      • 1.5.8 透明度の設定
      • 1.5.9 描画面(表面・裏面・両面)の設定
    • 1.6 計算アルゴリズムの復習
      • 1.6.1 テーラー展開と局所離散化誤差
      • 1.6.2 1次精度の計算アルゴリズム:オイラー法
      • 1.6.3 2次精度の計算アルゴリズム:修正オイラー法
      • 1.6.4 3次精度の計算アルゴリズム:ベルレ法
      • 1.6.5 計算誤差の考え方
  • 第2章 1体問題シミュレータの構築
    • 2.1 jQuery UIを用いたボタンの拡張
      • 2.1.1 拡張のポイント
      • 2.1.2 initEventメソッドの拡張
      • 2.1.3 switchButtonメソッドの拡張
    • 2.2 時間制御の拡張
      • 2.2.1 時刻制御メソッド:timeControlメソッド
      • 2.2.2 時間発展停止配列
      • 2.2.3 時間制御スライダー
    • 2.3 通信メソッドの定義
      • 2.3.1 PhysLabクラスの通信メソッド
      • 2.3.2 PhysObjectクラスの通信メソッド
      • 2.3.3 PhysObjectクラスの通信メソッドの利用方法
    • 2.4 1体問題シミュレータの設計
      • 2.4.1 1体問題シミュレータの概要
      • 2.4.2 HTML文書の構造と各種オブジェクトの宣言
      • 2.4.3 afterInitEventメソッド(オーバーライド)
      • 2.4.4 mouseDraggEventメソッド(オーバーライド)
      • 2.4.5 afterCheckFlagsメソッド(オーバーライド)
  • 第3章 剛体球運動の計算アルゴリズム
    • 3.1 剛体球の運動論
      • 3.1.1 N粒子系の運動方程式
      • 3.1.2 内力と外力
      • 3.1.3 重心の定義
      • 3.1.4 重心が満たす運動方程式
      • 3.1.5 N粒子系の運動エネルギー
      • 3.1.6 剛体の定義
    • 3.2 衝突の理論(回転なし)
      • 3.2.1 運動量と力積の関係からの帰着
      • 3.2.2 エネルギー保存則からの帰結
      • 3.2.3 衝突前後の速度の関係式の導出
      • 3.2.4 エネルギーに減衰のある跳ね返りの理論(非弾性衝突)
    • 3.3 衝突計算に必要な計算アルゴリズム
      • 3.3.1 ベルレ法における衝突アルゴリズムの導出
      • 3.3.2 getCollisionForceメソッド(PhysObjectクラス、単独衝突版)
      • 3.3.3 timeEvolutionOfCollisionメソッド(PhysObjectクラス)
      • 3.3.4 recordDynamicDataの拡張(PhysObjectクラス)
    • 3.4 衝突検知に必要な手続き
      • 3.4.1 基本的な考え方と手順
      • 3.4.2 checkCollisionメソッド(PhysLabクラス)
      • 3.4.3 バウンディング球による衝突可能性の検証
      • 3.4.4 checkPossibilityOfCollision(PhysLabクラス)
    • 3.5 球体と平面との衝突
      • 3.5.1 PhysObjectクラスのプロパティの拡張(リビジョン3)
      • 3.5.2 平面オブジェクトのプロパティ
      • 3.5.3 Planeクラス(PhysObjectクラスの派生クラス)
      • 3.5.4 initVectorsメソッド(PhysObjectクラス)
      • 3.5.5 computeVectorsメソッド(PhysObjectクラス)
      • 3.5.6 球体と平面との衝突判定アルゴリズム
      • 3.5.7 checkCollisionSphereVsPlaneメソッド(PhysLabクラス)
      • 3.5.8 getCollisionPlaneメソッド(PhysLabクラス)
    • 3.6 ベクトル演算とVector3クラスによる実装方法
      • 3.6.1 ベクトルの定義
      • 3.6.2 ベクトルの和と差とスカラー倍
      • 3.6.3 ベクトルの内積
      • 3.6.4 ベクトルの外積
      • 3.6.5 ベクトルの微分
    • 3.7 剛体の姿勢
      • 3.7.1 直交座標系と極座標系
      • 3.7.2 オイラー角による剛体の回転操作
      • 3.7.3 クォータニオンによる剛体の回転操作
      • 3.7.4 任意のタイミングによる軸ベクトル回転
      • 3.7.5 剛体の姿勢制御
      • 3.7.6 initQuaternionメソッド(PhysObjectクラス)
      • 3.7.7 updateメソッドの拡張(リビジョン1→リビジョン2)
    • 3.8 各種ベクトル量の計算
      • 3.8.1 接線ベクトルと法線ベクトル(2次元)
      • 3.8.2 接線ベクトルと法線ベクトル(3次元)
      • 3.8.3 点と直線の距離(2次元)
      • 3.8.4 点と直線の距離(3次元)
      • 3.8.5 点と平面の距離
      • 3.8.6 平面と直線の交点
      • 3.8.7 点対称・線対称・面対称
      • 3.8.8 Mathクラスに定義したクラスメソッド一覧
    • 3.9 球体と平面の辺・平面の角との衝突
      • 3.9.1 球体と平面の辺との衝突判定と衝突計算
      • 3.9.2 getCollisionSideメソッド(PhysLabクラス)
      • 3.9.3 球体と平面の角との衝突判定と衝突計算
      • 3.9.4 getCollisionEdgeメソッド(PhysLabクラス)
      • 3.9.5 実装方法:checkCollisionSphereVsPlaneメソッドの拡張1
    • 3.10 Floorクラスの拡張
      • 3.10.1 球体が跳ね返る床オブジェクト
      • 3.10.2 Floorクラスの拡張方法
      • 3.10.3 新しいFloorクラスによる床オブジェクトの生成
  • 第4章 さまざまな3次元オブジェクト
    • 4.1 立方体オブジェクト
      • 4.1.1 Cubeクラス(Planeクラスの派生クラス)
      • 4.1.2 コンストラクタの実装
      • 4.1.3 getGeometryクラスの拡張
      • 4.1.4 立方体オブジェクトと球オブジェクトの衝突計算
    • 4.2 点オブジェクト
      • 4.2.1 Pointクラス(Sphereクラスの派生クラス)
      • 4.2.2 コンストラクタの実装
      • 4.2.3 点オブジェクトと球オブジェクトの衝突計算
      • 4.2.4 checkCollisionSphereVsSphereメソッド
      • 4.2.5 getCollisionSphereメソッド
    • 4.3 円オブジェクト
      • 4.3.1 Circleクラス(Planeクラスの派生クラス)
      • 4.3.2 コンストラクタの実装
      • 4.3.3 getGeometryクラスの拡張
      • 4.3.4 computeCenterPositionメソッド(PhysObjectクラス)
      • 4.3.5 円オブジェクトと球オブジェクトの衝突計算
      • 4.3.6 getCollisionCircleメソッド(PhysObjectクラス)
    • 4.4 円柱オブジェクト
      • 4.4.1 Cylinderクラス(PhysObjectクラスの派生クラス)
      • 4.4.2 コンストラクタの実装
      • 4.4.3 getGeometryクラスの拡張
      • 4.4.4 円柱オブジェクトと球オブジェクトの衝突計算
      • 4.4.5 台形型円柱オブジェクトと球オブジェクトの衝突計算
      • 4.4.6 円柱端における衝突計算アルゴリズム
      • 4.4.7 checkCollisionSphereVsCylinderメソッド(PhysLabクラス)
      • 4.4.8 getCollisionCylinderSideメソッド(PhysLabクラス)
      • 4.4.9 種々のメソッドの拡張
  • 第5章 高度な衝突計算
    • 5.1 複数同時衝突の計算アルゴリズム
      • 5.1.1 同時衝突を考える必要性
      • 5.1.2 同時衝突の計算アルゴリズム(弾性衝突)
      • 5.1.3 getCollisionForceメソッドの拡張1(PhysObjectクラス、2点同時衝突版)
      • 5.1.4 2点同時衝突の計算例
      • 5.1.5 複数点同時衝突の計算アルゴリズムの導出
      • 5.1.6 getCollisionForceメソッドの拡張2(複数点同時衝突版)
      • 5.1.7 複数点同時衝突の計算例
      • 5.1.8 非弾性衝突における同時衝突の問題点
    • 5.2 接触状態
      • 5.2.1 接触を考える必要性
      • 5.2.2 接触力の計算アルゴリズム
      • 5.2.3 getContactForceメソッド(PhysObjectクラス)
      • 5.2.4 接触判定の方法と時間発展
      • 5.2.5 checkContactメソッド(PhysLabクラス)
      • 5.2.6 時間発展関連メソッドの拡張
      • 5.2.7 接触状態の計算例
      • 5.2.8 接触状態における横滑り吸い付き問題の解決
    • 5.3 運動する物体との衝突
      • 5.3.1 運動する物体との衝突を考慮する理由
      • 5.3.2 運動する物体との衝突力と接触力の理論
      • 5.3.3 getCollisionForceメソッドとgetContactForceメソッドの更なる拡張
      • 5.3.4 運動する物体との衝突計算の例
      • 5.3.5 マウスドラッグで移動する物体との衝突
    • 5.4 連立方程式の数値的解法
      • 5.4.1 線形連立方程式とは
      • 5.4.2 線形連立方程式の解き方
      • 5.4.3 ガウスの消去法の計算プログラム
      • 5.4.4 方程式の順番の入替(ピボット操作)
      • 5.4.5 ガウスの消去法の計算プログラム(ピボット操作付き)
  • 第6章 物理アプリケーションの開発(剛体球)
    • 6.1 ストロボ撮影機能の追加
      • 6.1.1 ストロボ撮影とは
      • 6.1.2 ストロボ撮影機能の実装手順
      • 6.1.3 ストロボオブジェクトの生成
      • 6.1.4 ストロボオブジェクトの描画:updateStrobeメソッド
      • 6.1.5 ストロボ撮影機能の利用方法
    • 6.2 軌跡・速度ベクトル・ストロボの表示/非表示の切り替え
      • 6.2.1 切り替えの必要性と実装手順
      • 6.2.2 HTML要素の追加
      • 6.2.3 PhysLabクラスの追記
      • 6.2.4 イベントの整理
    • 6.3 放物運動シミュレータ
      • 6.3.1 放物運動シミュレータの構築
      • 6.3.2 運動についての解説
      • 6.3.3 衝突グループの定義
    • 6.4 ブロック崩しゲーム
      • 6.4.1 ゲームのルール
      • 6.4.2 衝突履歴の保存
      • 6.4.3 ブロック崩しゲームの実装
      • 6.4.4 衝突判定リストからの削除:removeCollisionDetectionObjectsメソッド
      • 6.4.5 ブロック崩しゲームのHTML文書の修正

付属サンプルプログラム一覧

本書で取り扱ったすべての題材にはサンプルプログラムが用意されています。

ファイル名説明
1.1.1PHYSLAB_r1.html最もシンプルな仮想物理実験室(リビジョン1)
1.2.12PHYSLAB_r1_draggEvent.html3次元オブジェクトのマウスドラック
1.4.1PHYSLAB_r1__Sphere.html球オブジェクトの生成例
1.4.2PHYSLAB_r1__Floor.html床オブジェクトの生成例
1.4.3PHYSLAB_r1__Axis.html軸オブジェクトの生成例
1.5.1PHYSLAB_r1__OrthographicCamera.html正投影カメラの利用例
1.5.2PHYSLAB_r1__SpotLight.htmlスポットライト光源の利用例
1.5.2PHYSLAB_r1__PointLight.html点光源の利用例
1.5.3PHYSLAB_r1__shadowMap.htmlシャドーマップパラメータの設定例
1.5.3PHYSLAB_r1__shadowCamera.htmlシャドーカメラの可視化
1.5.4PHYSLAB_r1__BoundingBox.htmlバウンディングボックスの描画例
1.5.5PHYSLAB_r1__Sphere_Phong.htmlフォン反射材質の設定例
1.5.5PHYSLAB_r1__Sphere_Lambert.htmlランバート反射材質の設定例
1.5.5PHYSLAB_r1__Sphere_Basic.html発行材質の設定例
1.5.5PHYSLAB_r1__Sphere_Normal.html法線材質の設定例
1.5.6PHYSLAB_r1__Sphere_Normal_flat.html法線材質+フラットシェーディングの利用例
1.5.7PHYSLAB_r1__Sphere_Normal_segment.html法線材質+フラットシェーディングにて球オブジェクトの分割数をデフォルト値とした例
1.5.8PHYSLAB_r1__Sphere_transparent.html3次元オブジェクトの透明化の例
1.5.9PHYSLAB_r1__Sphere_side.html裏面描画の実装例
2.1.1PHYSLAB_r2__button.htmljQuery UIを利用したボタンの実装例
2.1.2PHYSLAB_r2__pauseStepList.html時間発展停止配列の利用例
2.1.3PHYSLAB_r2__timeslider.html時間制御スライダーの利用例
2.2.3PHYSLAB_r2__method.html通信メソッドの利用例
2.3OneBodyLab_r2.html 1体問題シミュレータ(リビジョン2)
PHYSLAB_r2.htmlシンプルな仮想物理実験室(リビジョン2)
3.4.1PHYSLAB_r3.htmlシンプルな仮想物理実験室(リビジョン3)
3.4.3OneBodyLab_r3__boundingSphere.htmlバウンディング球の描画例
3.5.1OneBodyLab_r3__attitude.html姿勢の設定例
3.7.1PolarCoordinatesSystem.htmlthree.jsによる極座標の表現
3.7.2EulerAngles.htmlオイラー角による回転操作の例
3.7.3Quaternion.htmlクォータニオンによる回転操作の例
3.7.4AxisRotation.html任意のタイミングによる軸ベクトル回転の例
3.7.5AttitudeControl.html剛体の姿勢指定の例
3.8.2Math.getTangentVectors.html平面の接線ベクトルの可視化
3.8.4Math.getDistanceBetweenPointAndLinear3.html点と直線の距離の可視化
3.8.5Math.getPerpendicularVector.html点と平面との距離の可視化
3.8.6Math.getIntersectionVectorOfLineAndPlane.html平面と直線の交点の可視化
3.8.7Math.getPointSymmetryVector.html点対称の可視化
3.8.7Math.getLineSymmetryVector.html線対称の可視化
3.8.7Math.getPlaneSymmetryVector.html面対称の可視化
3.9.1OneBodyLab_r3__side.html平面の辺と衝突する球の例
3.9.3OneBodyLab_r3__edge.html平面の角と衝突する球の例
3.10.1OneBodyLab_r3__Floor.html
OneBodyLab_r3__Floor2.html床面と衝突する球の例
PHYSLAB_r4.htmlシンプルな仮想物理実験室(リビジョン4)
4.1.1OneBodyLab_r4__Cube.html立方体オブジェクトの生成例
4.1.4OneBodyLab_r4__Cube_1.html立方体オブジェクトと球オブジェクトとの衝突の様子
4.2.1OneBodyLab_r4__Point.html点オブジェクトの生成例
4.2.3OneBodyLab_r4__Point_1.html点オブジェクトと球オブジェクトとの衝突の様子
4.2.3OneBodyLab_r4__Sphere.html球オブジェクトと衝突する球オブジェクトの様子
4.3.1OneBodyLab_r4__Circle.html円オブジェクトの生成例
4.4.1OneBodyLab_r4__Cylinder.html円柱オブジェクトの生成例
4.4.2OneBodyLab_r4__Cylinder_1.htmlオープンエンド時の円柱両面描画の例
4.4.3OneBodyLab_r4__Cylinder_2.html円柱オブジェクトの側面と衝突する球オブジェクトの様子
4.4.6OneBodyLab_r4__Cylinder_3.html円柱オブジェクトの内部と衝突する球オブジェクトの様子
4.4.7OneBodyLab_r4__Cylinder_4.html円錐オブジェクトと衝突する球オブジェクトの様子
5.1.1OneBodyLab_r4_collision1.html2つの平面オブジェクトと同時衝突させた球オブジェクトの衝突の様子(リビジョン4)
5.1.2OneBodyLab_r4_collision2.html2つの平面オブジェクトと同時衝突させた球オブジェクトの衝突の様子2(リビジョン4)
5.1.4OneBodyLab_r5_collision1.html2つの平面オブジェクトと同時衝突させた球オブジェクトの衝突の様子(リビジョン5)
5.1.4OneBodyLab_r5_collision2.html斜めに配置した2つの平面オブジェクトと同時衝突させた球オブジェクトの衝突の様子
5.1.7OneBodyLab_r5_collision3.html4つの平面オブジェクトと同時衝突させた球オブジェクトの衝突の様子
5.2.1OneBodyLab_r4_contact1.html平面オブジェクトにめり込む球オブジェクト(リビジョン4)
5.2.7OneBodyLab_r5_contact1.html平面オブジェクトと接触する球オブジェクト(リビジョン5)
5.2.7OneBodyLab_r5_contact2.html4つの平面オブジェクトと同時接触する球オブジェクト
5.2.8OneBodyLab_r5_contact3.html平面オブジェクトを横滑りする球オブジェクト
5.2.8OneBodyLab_r5_contact4.html4つの平面オブジェクトと同時接触しながら横滑りする球オブジェクト
5.3.4OneBodyLab_r5_dynamicCollision.html振動する平面オブジェクトと衝突する球オブジェクト
5.3.5PHYSLAB_r5_dynamicCollision.htmlマウスドラックで移動する平面オブジェクトと衝突する球オブジェクト
OneBodyLab_r5__Cube.html2つの立方体と同時に衝突する球オブジェクト
PHYSLAB_r5.htmlシンプルな仮想物理実験室(リビジョン5)
6.1.1PHYSLAB_r6__strobe.htmlストロボ撮影機能の例
6.2.1PHYSLAB_r6__button.htmlラジオボタンによる表示/非表示の切り替えインターフェースの実装
6.3.1ParabolicMotionLab_r6.html放物運動シミュレータ
6.3.1ParabolicMotionLab_r6_1.html放物運動シミュレータ(斜方投射の例)
6.3.3ParabolicMotionLab_r6_2.html床面と衝突する球体の運動
6.4.1BlokGame_r6.htmlブロック崩しゲーム
PHYSLAB_r6.htmlシンプルな仮想物理実験室(リビジョン6)

サンプルプログラム実行例(画面キャプチャ)



▲このページのトップNPO法人 natural science トップ

関連記事

仮想物理実験室







▲このページのトップNPO法人 natural science トップ