【物理シミュレーションに挑戦!】古典力学
斜面を転がる剛体球運動の計算アルゴリズム11:複数剛体球の同時衝突(回転なし)
本項は古典力学の様々な系の物理現象を解析的に扱うのではなく、数値計算による物理シミュレーションを実行するために必要な計算アルゴリズムを示すことを目的とします。
様々な初期条件に対する物理シミュレーションを実現するために、最も汎用的な直交座標系を用います。
・斜面を転がる剛体球運動の計算アルゴリズム1:摩擦力無しの場合
・斜面を転がる剛体球運動の計算アルゴリズム2:摩擦力無しの場合の例(曲面上の運動)
・斜面を転がる剛体球運動の計算アルゴリズム3:静止摩擦力のみの場合
・斜面を転がる剛体球運動の計算アルゴリズム4:静止摩擦力のみの場合の例(曲面上の運動)
・斜面を転がる剛体球運動の計算アルゴリズム5:滑りながら転がる剛体球
・斜面を転がる剛体球運動の計算アルゴリズム6:滑りながら転がる剛体球(曲面上の運動)
・斜面を転がる剛体球運動の計算アルゴリズム7:空気抵抗力と転がり摩擦抵抗力
・斜面を転がる剛体球運動の計算アルゴリズム8:斜面との衝突する剛体球(回転なし)
・斜面を転がる剛体球運動の計算アルゴリズム9:斜面との衝突する剛体球(回転あり)
・斜面を転がる剛体球運動の計算アルゴリズム10:剛体球同士の衝突(回転なし)
・斜面を転がる剛体球運動の計算アルゴリズム11:複数剛体球の同時衝突(回転なし)
・斜面を転がる剛体球運動の計算アルゴリズム12:接触中の剛体球に衝突した場合(回転なし)
・斜面を転がる剛体球運動の計算アルゴリズム13:剛体球同士の衝突(回転あり)
・斜面を転がる剛体球運動の計算アルゴリズム14:固定された剛体球に衝突した場合(回転あり)
・斜面を転がる剛体球運動の計算アルゴリズム15:力学的エネルギー保存則を満たした斜面との衝突(回転あり)
・斜面を転がる剛体球運動の計算アルゴリズム16:力学的エネルギー保存則を満たした剛体球同士の衝突(回転あり)
前項では2つの剛体球が衝突したときの衝突力の導出を行いました。 本項では、2つ以上の剛体球が同時に衝突した際の衝突力の導出方法を示します。
N個の剛体球の衝突モデル
本シミュレーションでは、計算時間間隔の間に発生した複数の衝突を同時衝突と定義します。 下図は同時衝突の模式図です。1番目の剛体球と直接衝突しているのは2番目と3番目で、4番目とは衝突していません。
衝突力の計算
N個の剛体球が同時に衝突する場合、n番目の剛体球の衝突前後の速度ベクトルは
となります。衝突力ベクトルは次のとおり与えられます。
ただし、です。
この衝突力の大きさの組み合わせを決定することができれば成功です。なお、衝突力の大きさを表すは反対向きの衝突力の大きさと同じ大きさになります。これを踏まえると未知の衝突力の数は 個です。なお、N個の同時衝突のうち衝突していない剛体球同士には力は加わらないので、法線ベクトルは0として扱うことにします。
衝突力の条件式
衝突力の大きさを決定するには未知の衝突数の数だけの方程式が必要となります。2つの剛体球の衝突の場合はエネルギー保存則1つで足りましたが、今回のように衝突力が複数存在する場合には条件式が足りません。そこで、2つの剛体球の非弾性衝突で用いた表式
を用います。前項で示したとおり、反発係数e=1の場合にエネルギー保存則と同等の役割を果たします。この条件式に先の速度ベクトルを代入して、衝突力についての連立方程式を立てます。
上式で個の未知の衝突力に対する条件式が得られたことになります。 この連立方程式を計算することでが得られます。
同時衝突時の連立方程式の解法などは「HTML5による物理シミュレーション 【剛体編】」を参照下さい。
複数剛体球の同時衝突シミュレーション
次のグラフィックスは複数剛体球の同時衝突シミュレーションです。衝突時に剛体同士の回転は考慮していません。