以任意角度将球从墙上弹起

本文关键字:任意角 | 更新日期: 2023-09-27 18:30:23

我试图让用户画一个球拍,然后他们可以用来击球。但是,我似乎无法让球正确反弹,因为球速度的 x 和 y 分量没有与墙壁对齐。我该如何解决这个问题?

我在这里尝试了Gareth Rees给出的建议,但显然我对向量不够了解,无法遵循它。例如,我不知道你在向量中到底存储了什么 - 我知道它是一个有方向的值,但是你是否存储了它之间的 2 个点,斜率,角度?

我真正需要的是给定墙壁的角度以及球击中时的 x 和 y 速度,以便之后找到新的 x 和 y 速度。

以任意角度将球从墙上弹起

Gareth Rees的公式是正确的,但我发现这里的图片和解释更清楚一些。 也就是说,基本公式为:

Vnew = -2*(V dot N)*N + V
where
V = Incoming Velocity Vector
N = The Normal Vector of the wall

由于您不熟悉向量表示法,因此您需要了解此公式:向量基本上只是 x,y 对,因此V = (v.x, v.y)N = (n.x, n.y)。 平面最好用平面的法线来描述,即垂直于平面的单位长度向量。 然后是几个公式,b*V = (b*v.x, b*v.y); V dot N = v.x*n.x+v.y*n.y,也就是说,它是一个标量;和A + B = (a.x+b.x, a.y+b.y). 最后,要找到基于任意向量的单位向量,它是 N = M/sqrt(M dot M) .

如果曲面是弯曲的,则在接触点使用法线。