#私の元には、努力の計算式の多くは、完全な検証により導出されます
#二つの目標の位置と速度、Rは半径であり、質量互いに異なる品質と容易半径を有する、本明細書において提供される
DEFコリジョン(LOC1、LOC2、SP1、SP2):
X、Y = LOC1の
X2、Y2 = LOC2
DLX、DLY X2-X = Y Y2-
DX、のDy = SP1の
DX2、DY2 = SP2
DVX、DVY = DX-DX2、DY-DY2の
現在の"過度の衝突"とは、位置要求接線方向の位置に戻った場合、先行#
もし** 2 + DLY DLX 2 <R&LT ** 2:
X、X-Y = DX、DyをY-
X2、Y2-DX2 = X2、Y2-DY2
DLX、DLY = X-X2、Y2-Y
B = ** 2 * R&LT(DVX DVY ** 2 + 2) - (* DLX DVY - DVX DLY *)** 2
#が衝突までの時間を算出し
、P = -dlx * DVX -dly * DVY + math.sqrt(B)
P2 = -dlx * -dly DVX * DVY - math.sqrt(B)
もしDVX ** 2 + DVY ** 2 == 0:
トン= 1
2〜#それがされるので、接線は二つの溶液、小さな取る有する
:他
TEMP =分((ABS(P)、ABS(P2)))
** T =(TEMP)/(2 + DVYのDVXを2)
#衝突位置
LOC1 * DX = X + T、Y + T *のDy
LOC2 = Tの*のX2 + DX2、T * Y2 + DY2
##プリント(math.sqrt((LOC1 [1] -loc2 [1])** 2+(LOC1 [0] -loc2 [0])** 2))
#は、衝突速度、運動量の交換要求後に変更
:DLY == 0 IF
EY = 0
EX = DVX
他:
K = DLX / DLY
EY =(K * + DVY DVX)/(K * Kの+ 1)
EX = K * EY
SP1 = -ex DX、DY-EY
SP2 = DX2 + EX、EY + DY2の
リターン[LOC1、LOC2、SP1、SP2]