iPhone OpenGL:找出对象的旋转

时间:2011-01-24 14:26:02

标签: iphone opengl-es

我需要找到一个物体的旋转。所以我在2轴上旋转一个立方体,当用户点击时,我需要将立方体旋转到他们点击的面。我查看了ModelView矩阵并将点从弧度转换为度数,但范围从0到180(90次发生两次)

1 个答案:

答案 0 :(得分:2)

如果您知道模型视图矩阵,那么您可以找到明确表示旋转的四元数。

这是一个包含公式的链接,用于根据旋转矩阵http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm

计算四元数

修改

如果您的物体有2个模型视图矩阵,并且您想要从一个位置平滑移动到另一个位置,您仍然可以使用四元数!

让您有2个矩阵w1 w2。对于每个构建使用现有公式的四元数q1q2 - 它很简单。像这样制作动画:

在每个动画步骤中构造对象旋转的当前四元数:

allTransform = q2 - q1
currentTransform = q1 + t*allTransform

其中t来自[0, 1],allTransform是四元数 当您知道currentTransform四元数从中构建模型视图矩阵时 - 只需使用现成的公式。

这将产生漂亮而流畅的动画。