什么是四元数旋转?

Posted

技术标签:

【中文标题】什么是四元数旋转?【英文标题】:What's a quaternion rotation? 【发布时间】:2011-04-30 16:55:29 【问题描述】:

四元数旋转是否只是对象将朝其旋转的带有 X、Y、Z 的向量,以及使对象绕其轴旋转的滚动?

就这么简单吗?

意思是如果你有 X=0、Z=0 和 Y=1 对象将面朝上? 如果 Y=0、Z=0 和 X=1,对象将面向右侧?

(假设 X 向右,Y 向上和 Z 深度)

【问题讨论】:

【参考方案1】:

四元数有 4 个分量,可以与角度 θ 和轴矢量 n 相关。旋转将使对象围绕轴 n 旋转角度 θ。

例如,如果我们有一个像这样的立方体

 ______
|\  6  \
| \_____\     z
|5 |    | : y ^
 \ | 4  |    \|
  \|____|     +--> x

然后绕轴 (x=0, y=0, z=1) 旋转 90° 会将“5”面从左侧旋转到前面。

 ______
|\  6  \
| \_____\      z
|3 |    | :  x ^
 \ | 5  |     \|
  \|____|  y<--+

(注:这是旋转的轴/角度描述,这是OP混淆的。关于四元数如何应用于旋转,请参阅http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation)

【讨论】:

@clamp:取决于系统是左撇子还是右撇子。 OP 说“Y 向上和 Z 深度”。 @LarsH:把你的头放在 z 轴的下方,然后在镜子里观察整个事情。 :) 这个解释很简单,但很完美。谢谢!【参考方案2】:

quaternion 通常是复数扩展到 4 维。所以不,它们不仅仅是 x、y 和 z 以及一个角度,而且它们很接近。更多下文...

四元数可用于represent rotation,因此它们对图形很有用:

单位四元数提供了一个方便的 表示的数学符号 对象的方向和旋转 在三个维度。与欧拉相比 角度他们更容易组成和 避免云台锁问题。 与旋转矩阵相比,它们是 在数值上更稳定,可能是 更高效。

那么 4 个组件是什么?how do they relate to the rotation?

[单位四元数]点(w,x,y,z)代表一个 绕轴旋转 角度 alpha 的向量 (x,y,z) = 2 cos-1 w = 2 sin-1 sqrt(x2+y2+z2)。

回到你的问题,

如果您有 X=0、Z=0 和 Y=1 的含义 物体会朝上吗?

不...如果您的图形系统使用右手旋转,对象将围绕此&lt;0,1,0&gt; 向量旋转,即它将围绕 y 轴旋转,从上方看逆时针旋转。 (如果我们插入 w = sqrt(1 - (0 + 1 + 0)),你的单位四元数是 (0,0,1,0),它将旋转角度 2 cos-1 sup>0, = 2 * 90 度 = 180 度或 pi 弧度。)

如果您有 Y=0、Z=0 和 X=1,那么对象将面向右侧?

这将围绕矢量&lt;1,0,0&gt;(x 轴)旋转,因此从正 x 方向(例如右)看,它将逆时针旋转。所以顶部会向前转动(180 度,所以它会旋转直到面朝下)。

【讨论】:

以上是关于什么是四元数旋转?的主要内容,如果未能解决你的问题,请参考以下文章

四元数运动学笔记旋转的雅克比矩阵

四元数旋转

四元数quaternion

四元数和归一化

四元数绕轴旋转的分量

四元数法