移动球从惰性球反弹的角度

far*_*ich 4 java math physics collision

让两个球,其中一个在笛卡尔坐标平面上移动,而另一个是静止和不动的.在某些时候,移动的球与惰性球碰撞.假设移动的球在一条直线上移动,在得到以下信息的情况下,如何得出移动球将被推进的新角度:

移动球的中心坐标(X0,Y0),半径(R0)和撞击前的行程角度(A0)

固定球的中心坐标(X1,Y1)和半径(R1)

Dr.*_*ius 12

如果你的第二个球有无限质量:

在此输入图像描述

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]))
           ]
Run Code Online (Sandbox Code Playgroud)

哪里:

H   = (R0 + R1)^2 - ((Y0 - Y1) Cos[A0] + (X0 - X1) Sin[A0])^2  
R^2 = (R0 + R1)^2
XD  =  X1 - X0
YD  =  Y1 - Y0
Run Code Online (Sandbox Code Playgroud)

编辑

要确定整个轨迹,您还需要在撞击时移动球的中心坐标.他们是:

  {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]}
Run Code Online (Sandbox Code Playgroud)