2009年9月1日火曜日

物理 #3 衝突(3次元)

最終的には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は,e1e2に垂直となるようにします.

具体的には,

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=v1e1
w1y=v1e2
w1z=v1e3
w2x=v2e1
w2y=v2e2
w2z=v2e3

だから,

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 件のコメント: