最終的には3次元.
球A:
位置:r1=(x1, y1, z1)T
衝突前速度:v1=(v1x, v1y, v1z)T
衝突後速度:v1'=(v1x', v1y', v1z')T
質量:m1
反発係数:e1
球B:
位置:r2=(x2, y2, z2)T
衝突前速度:v2=(v2x, v2y, v2z)T
衝突後速度:v2'=(v2x', v2y', v2z')T
質量:m2
反発係数:e2
重要なのは,正規直交基底の取り方ですが,
1つ目e1は,r2-r1を正規化したもの,
2つ目e2は,e1に垂直になるようにし,
3つ目e3は,e1,e2に垂直となるようにします.
具体的には,
e1=(x, y, z)T
とします.次に
e2として,
(0, z, -y)T/|e2|
(y, -x, 0)T/|e2|
の内,計算可能なものを選びます.
そして,
e3=e1×e2
とします(“×”は外積).
このようにすると,
e1 - 1次元での衝突
e2 - 速度は不変
e3 - 速度は不変
となります.
あとは2次元の時と同様に
v1=w1xe1+w1ye2+w1ze3
v2=w2xe1+w2ye2+w2ze3
と表した時,
w1x=v1・e1
w1y=v1・e2
w1z=v1・e3
w2x=v2・e1
w2y=v2・e2
w2z=v2・e3
だから,
w1x'=(m1w1x+m2w2x)/(m1+m2)+e(w2x-w1x)m2/(m1+m2)
w1y'=w1y
w1z'=w1z
w2x'=(m1w1x+m2w2x)/(m1+m2)+e(w1x-w2x)m1/(m1+m2)
w2y'=w2y
w2z'=w2z
となり,
v1x'=w1x'e1x+w1y'e2x+w1z'e3x
v1y'=w1x'e1y+w1y'e2y+w1z'e3y
v1z'=w1x'e1z+w1y'e2z+w1z'e3z
v2x'=w2x'e1x+w2y'e2x+w2z'e3x
v2y'=w2x'e1y+w2y'e2y+w2z'e3y
v2z'=w2x'e1z+w2y'e2z+w2z'e3z
衝突条件は勿論,
(x2-x1)2+(y2-y1)2+(z2-z1)2≦(r1+r2)2
(rはそれぞれの球の半径です)
これで終わりです.4次元,5次元と拡張する場合は,基底の取り方に注意すれば後は同じです.
シミューレーションすると,これもまた感動です.
0 件のコメント:
コメントを投稿