2017-01-31 27 views
0

我意识到这个问题已经回答过,但还没有按照我的理解。确定反射角度而不是幅度

在代码中,我弹跳两个球彼此。我用弧度知道每个球的当前方向,我可以使用atan2()函数找到正常角度。如果我忽略一个球并专注于另一个球 - 我有一个入射角和一个正常角度。有没有一种直接的方法可以找到反射角度而不需要大小?

+0

[Ball to Ball Collision - Detection and Handling](http://stackoverflow.com/questions/345838/ball-to-ball-collision-detection-and-handling) – Zouch

回答

0

这不一定可能。碰撞由冲击前后的保存动量和能量决定,但碰撞类型(弹性/非弹性)的结果不同。由于方程考虑了撞击前球的速度和质量,所以不可能单独观察它们并期望获得正确的结果。

唯一的情况是“容易”,如果另一个球是墙壁和碰撞(这是因为墙不移动 - 它的质量是'无限的',并且动量将在0之前和之后碰撞)。那么输出角度与事件直接相反。

+0

因此,在一个没有摩擦力或弹性 - 问题依然存在,我可以找到事件,应该直接相反,只有度数传入和正常?我知道你说它不会产生*逼真*物理,但这不是我的问题 - 我只是问几何 – user6191359

+0

@ user6191359摩擦力/弹性无关紧要 - 重要的是你有两个移动物体在一面墙的情况下,它不会移动)。对于墙壁情况(2D),想象它具有正常的180°(即,直接在左侧)。一个来自左下方的球可能会有一个角度200˚,它会反映到160˚(也就是说,角度差异是+20˚,之后是-20˚)。一般来说,我会建议反对这一点,并使用法向量代数。 – pingul

+0

@ user6191359我意识到上面的例子有点不可思议。所有角度都从墙的角度来看。在这种情况下,事件球将在其自己的参照系中具有+ 20°的角度。我希望这是有道理的。 – pingul