我正在尝试制作(本质上)简单的台球游戏,并希望能够预测一杆击中另一个球后的去向。
我相信,第一部分是计算母球是否会击中任何东西,如果击中,它将在何处发生碰撞。我可以计算直线和一个球的碰撞点,但不能计算两个球。
因此,给定2个球的x/y位置和速度,我如何计算它们碰撞的点?
(PS:我知道我可以通过计算整个过程中每一步两个球之间的距离来做到这一点,但我希望可以得到一些更优雅,更理想的东西。)
设置示例:尝试计算红点
http://dl.dropbox.com/u/6202117/circle.PNG
最佳答案
需要注意的一些事情:
r
碰撞时,它们的中心彼此分开2r
。 alpha
。 现在您有一些几何要做。
做这个构造:
A
点。 B
点。 AB
。 R
沿移动方向构造射线A
。 2r
周围构造一个半径为B
的圆。 B
垂直于R
的地方放一个线段,称为相交点C
。 AB
的距离,并且可以找到alpha
和AB
之间的角度R
,而《正弦定律》可以找到BC
的长度。 D
,在该点上圆与A靠近的R
相交,并再次使用正弦定律找到距离AD。 BD
的中点现在你知道了一切。
以此为基础构建有效的代码是一项练习。
顺便说一句-如果两个球都在移动,则此构造将不起作用,但是您可以将其转换为一个静止的框架,以这种方式求解,然后再转换回去。只需确保在逆向转换后检查解决方案是否在允许的范围内...
/物理学家不能不能做出这样的评论。我试图抗拒。我真的做到了
关于math - 计算两个运动球将碰撞的x/y点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692532/