假设有两个球,其中一个在笛卡尔坐标平面内移动,而另一个静止不动。在某个时刻,移动的球与惰性球发生碰撞。假设移动的球沿直线行进,如何根据以下信息推导出移动的球将被推进的新角度:
移动球的中心坐标(X0,Y0)、半径(R0)和撞击前的行进角度(A0)
静止球的中心坐标(X1,Y1)和半径(R1)
最佳答案
如果你的第二个球有无限大的质量:
其中 phi(经过长时间计算后)是:
phi= -ArcTan[
( 2 R^2 Sin[A0] + 2 (YD Cos[A0] - XD Sin[A0]) (2 H Cos[A0] +
2 XD Sin[A0]^2 - YD Sin[2 A0])) /
((2 R^2 - XD^2 - 3 YD^2) Cos[A0] + (XD^2 - YD^2) Cos[3 A0] +
8 XD YD Cos[A0]^2 Sin[A0] + 4 H Sin[A0] (-YD Cos[A0] + XD Sin[A0]))
]
地点:
H = (R0 + R1)^2 - ((Y0 - Y1) Cos[A0] + (X0 - X1) Sin[A0])^2
R^2 = (R0 + R1)^2
XD = X1 - X0
YD = Y1 - Y0
编辑
要确定整个轨迹,您还需要移动球在撞击时的中心坐标。它们是:
{X,Y}= {X1+Sin[A0] ((Y1-Y0) Cos[A0]+ (X0-X1) Sin[A0])-Cos[A0] Sqrt[H],
Y1+Cos[A0] ((Y0-Y1) Cos[A0]+(-X0+X1) Sin[A0])-Sin[A0] Sqrt[H]}
关于java - 移动的球从惰性球弹回的角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5532891/