有人可以解释这些用于计算非正交碰撞的表达式背后的逻辑吗?

时间:2010-12-18 18:14:09

标签: physics processing

我在一本处理书中的例子中描述了如何计算非正交碰撞(一个球在非水平面上弹跳),但是,我并不真正理解这四个表达式背后的逻辑。

 float groundXTemp = cosine * deltaX + sine * deltaY;
 float groundYTemp = cosine * deltaY - sine * deltaX;
 float velocityXTemp = cosine * velocity.vx + sine * velocity.vy;
 float velocityYTemp = cosine * velocity.vy - sine * velocity.vx;

他们应该计算地面坐标和球速度的临时值,以计算碰撞,就好像它是正交的一样。余弦和正弦是地面旋转的值,速度变量是球的速度。我无法理解表达式实际上正在做的事情,以使地面水平,本书并没有很好地解释它。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:3)

这些表达式是旋转的传统表达式。如果你取一个点(x,y),然后用角度θ旋转它,你将获得一个带坐标的点(x',y'):

x'= cos(theta)* x - sin(theta)* y y'= sin(theta)* x + cos(theta)* y

在你的情况下,让我们说theta是地面的角度,你想做反向旋转(所以用角度-theta)使地面水平,这就是为什么符号与上面的公式不同( cos(-theta)= cos(theta)和sin(-theta)= -sin(theta))。

如果您想详细了解,请查看:http://en.wikipedia.org/wiki/Rotation_matrix