如何计算球的下一个方向

时间:2014-12-16 21:29:19

标签: java android

我不知道如何在碰到墙壁时计算球的下一个方向。

示例球正在移动X +5和Y +3但是当它接触墙壁时,方向应该像现实生活一样变化。 (就像一个台球)

http://i.stack.imgur.com/Y5AOZ.png

2 个答案:

答案 0 :(得分:5)

最简单的模拟机制是:如果你碰到侧墙,将x速度乘以-1。如果您碰到顶部或底部墙,请将y速度乘以-1

假设您的轨道是由与坐标系的x轴或y轴平行的线组成的矩形(即直线),那么这将满足入射角=反射角约束。如果没有,那么你必须做一些涉及角度的数学。

您可能还需要考虑墙壁的impulse和球与表面之间的friction来计算碰撞后球随时间移动的速度。否则你的球不会停止移动。这两者都(很可能)是一个简单的常数,它以相同的方式影响速度的x和y分量(即两者乘以相同的常数,例如摩擦力为0.99等)。这可以为您提供一个相当准确的模拟,并进行一些调整。

答案 1 :(得分:-1)

现实物理学的入射角等于反射角。 换句话说,如果球以30度角进入,它会以30度的角度反弹。

你需要两个点(在球的路径上)来计算它撞到墙壁的角度。 使用与"反射角度相同的角度"。 确保根据需要进行调整,以便为所有内容使用相同的参考框架。

计算球的下一个位置的例程负责将球保持在该轨道上。

基本代数和trig为您提供所需的方程式,以获得所需的值。 例如,线的斜率(角度)由y = m x + c给出。 (y,x是坐标,m是斜率,c是常数)。 这非常简单 - 它只是基本的代数。