四元数与轴+角度
Posted
技术标签:
【中文标题】四元数与轴+角度【英文标题】:Quaternions vs Axis + angle 【发布时间】:2012-03-14 02:32:42 【问题描述】:我一直试图找出两者之间的区别,但没有运气减去这个
两者的主要区别 这两种表示是四元数的旋转轴被缩放 通过旋转半角的正弦,而不是将角度存储在 向量的第四个分量,我们存储半角的余弦。
我不知道是什么
半旋转角的正弦
或
半角的余弦
是什么意思?
【问题讨论】:
可能属于Mathematics SE。 【参考方案1】:Quaternios 和 Axis-angle 都是 3D 旋转/方向的 4D 表示,各有利弊。
axis-angle:表示旋转角度a和旋转轴n。例如,绕 Y 轴旋转 180 度将表示为 a = 180, n= 0,1,0。表示非常直观,但要实际应用旋转,则需要另一种表示,例如四元数或旋转矩阵。
四元数:表示一个 4D 向量的旋转。需要更多的数学运算并且不太直观,但它是一种更强大的表示。四元数很容易插值(混合),并且很容易将它们应用于 3D 点。这些公式很容易在网上找到。给定 a 弧度围绕归一化轴 n 的旋转,四元数 4D 向量将为 cos a/2, (sin a/2) n_x, (sin a/2) n_y, (sin a/2) n_z。这就是半角的正弦和余弦的来源。
【讨论】:
出于好奇,有没有使用更少数学但可能使用更多数字的强大表示?例如,我假设您可以堆积 Axis-Angle 表示来模仿欧几里得。 @Aaron Franke 我有时使用向量表示,其中向量的方向是旋转轴,向量的范数是旋转。我相信这有时被称为Exponential Map
或Quaternion Log
。如果其中两个靠近在一起,您实际上可以在它们之间进行欧几里得插值。【参考方案2】:
这意味着,例如,如果您想绕 Z 轴 (0,0,1) 旋转 180 度,那么四元数的实部将是 cos(180deg/2)=0
,而它的虚部将是 sin(180deg/2)*(0,0,1)=(0,0,1)
.那是q=0+0i+0j+1k
。 90 度旋转会给你q=cos(90deg/2)+sin(90deg/2)*(0i+0j+1k)=sqrt(2)/2+0i+0j+sqrt(2)/2*k
,等等。
OTOH,如果您要问什么是正弦和余弦,请检查您的语言是否提供 sin()
和 cos()
函数(尽管它们的参数可能以弧度为单位),然后查看 http://en.wikipedia.org/wiki/Sine。
【讨论】:
以上是关于四元数与轴+角度的主要内容,如果未能解决你的问题,请参考以下文章