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

标签 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;

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

最佳答案

这些表达式是旋转的传统表达式。如果你取一个点 (x,y),并将其旋转角度 theta,你将获得一个坐标为 (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

关于physics - 有人可以解释这些用于计算非正交碰撞的表达式背后的逻辑吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4479348/

相关文章:

javascript - 小球碰撞js公式

python - 在 pymunk 中在动态体和移动静态体之间创建 DampedRotarySpring

python 处理 keyPressed() 函数不起作用

java - 很简单 : 1/20 returns 0. 0

javascript - 使用来自 Processing-JS 的 JSON

java - Android 处理,库的使用

javascript - 如何使用 P5js 将 DOM 元素拖入 Canvas 而不离开 Canvas ?

algorithm - 宽相碰撞检测方法?

c# - 生成高斯数

python - 计算 1d 内单个粒子的均方位移