--------------------------------------
2つの剛体の衝突について考えてみます。
途中でおかしい所がありましたら、ぜひ教えてください。
衝突が発生すると当然力が生じ、双方の剛体の運動量を変化させます。
運動量とは、速度に質量を掛けたものです。
この変化した運動量に等しいものが力積です。
また、運動量保存則より、双方の剛体の衝突前・衝突後の運動量の合計は等しくなります。
各剛体の衝突前の速度をv1、v2、衝突後の速度をv'1、v'2、質量をm1、m2とすると、
m1 * v1 + m2 * v2 = m1 * v'1 + m2 * v'2
と表すことができます。
※以降、「*」は乗算、「/」は除算を表します
この運動量保存則は、後述する作用・反作用の法則を守れば自動的に満たされるので、
今回は特に気にする必要はありません。
もう一つ、反発係数というものがあります。
文字通り跳ね返りの具合を表し、衝突前と衝突後の速度の差の比に等しくなります。
ちょっとややこしいですね。
先程と同じように式にしてみましょう。
e = -(v'2 - v'1) / (v2 - v1)
eが反発係数です。
通常この値は0≦e≦1で、この範囲を超えることはありません。
もし超えたら大変なコトになってしまいます(衝突前より速度差が増える!?)。
力積について思い出してみましょう。
力積とは、衝突によって生じた運動量の変化のことでしたね。
剛体1に働く力積をJとすると、
J = m1 * (v'1 - v1)
と表せます。
ここで作用・反作用の法則により、剛体1と剛体2が受ける力の大きさは等しく、向きは正反対となります。
よって剛体2に働く力積は、
-J = m2 * (v'2 - v2)
と表すことができます。
Jを求めてみましょう。
まず、衝突後の剛体の速度について解きます。
v'1 = v1 + J / m1
v'2 = v2 - J / m2
次に、これを反発係数の式に代入します。
e = -(v'2 - v'1) / (v2 - v1)
e = -{(v2 - J / m2) - (v1 + J / m1)} / (v2 - v1)
変形していきます。
e * (v2 - v1) = -{(v2 - J / m2) - (v1 + J / m1)}
e * (v2 - v1) = -v2 + J / m2 + v1 + J / m1
e * (v2 - v1) = -(v2 - v1) + (J / m1 + J / m2)
J / m1 + J / m2 = e * (v2 - v1) + (v2 - v1)
J * (1 / m1 + 1 / m2) = (e + 1) * (v2 - v1)
J = (e + 1) * (v2 - v1) / (1 / m1 + 1 / m2)
Jが解けました。
このJを使って衝突後の各剛体の速度を求められます。
…が、ここでの速度は1次元の数値として扱ってきました。
2次元や3次元のベクトルの速度を持つ剛体はどうすればよいのでしょう?
これは、速度を方向と大きさに分解することで解決できます。
法線ベクトルという概念を導入します。
衝突には必ず向きがあり、その向きを単位ベクトル(=長さ1のベクトル)で表したものが法線ベクトルです。
この向きは、力積Jの作用する方向でもあります。
法線ベクトルをnとすると、先程の式の
v2 - v1
の部分は、衝突の向きにおける速度の大きさ、すなわち法線ベクトルとの内積
n・(v2 - v1)
で表すことができます。
そして衝突で発生する力のベクトルは、法線ベクトルに力積を掛けたもの、つまり
J * n
となります。
これらを元に衝突後の速度を求めてみましょう。
v'1 = v1 + (J / m1) * n
v'2 = v2 - (J / m2) * n
また、法線ベクトルを利用した力積の式は以下のようになります。
J = (e + 1) * {n・(v2 - v1)} / (1 / m1 + 1 / m2)
はい、お疲れ様でした!
これで2つの剛体の衝突計算ができるようになりました。
なお、この式は回転要素を一切考慮していないので、衝突による回転を計算することはできません。
回転も考慮すると、各速度や慣性モーメント、衝突位置も計算に入れる必要があります。
力積の式も複雑になるので、ここでは割愛しました。
それについては、また別の機会に。
≪ 水銀と剛体その2 | HOME | 温度調整計画 ≫
≪ 水銀と剛体その2 | HOME | 温度調整計画 ≫
Author:saharan
申し訳ないですが、記事に関係ないコメントは削除するようにしています。
ちなみにこれですね。久々に見たら相当変わってました。 ttp://powdertoy.co.uk/