2012-06-07 265 views
9

旋转矢量通过直接存储旋转轴和角度大小来表示旋转。旋转矢量与四元数

四元数似乎更多地用于表示旋转。为什么四元数在计算机图形学中优于旋转向量?

+0

[检查此链接的详细信息](http://math.stackexchange.com/questions/1732908/quaternion-for-beginner/1732961#1732961) –

回答

13

四元更容易计算着,对于课程的计算机(作为一个人,你不应该使用3D旋转打扰反正):

  • 会怎么做时要连接的两个旋转你做在向量表示?您必须将它们转换为四元数或矩阵形式(使用昂贵的三角函数)才能做到这一点(并且可能会返回),而使用经典四元数乘法可以有效地将四元数连接起来。

  • 当您想要使用矢量格式的旋转来旋转点/矢量,或将它作为矩阵发送给GL/D3D时,您会做什么?将其转换为矩阵(再次使用昂贵的三角函数)。另一方面,四元数相当有效地转换成矩阵,因为它已经编码了所需的正弦和余弦。

所以矩阵和四元数是更合适的旋转表示。从这两个四元数更紧凑,他们也很容易转换成轴角表示(再回来),虽然使用trigonometrics。所以如果你需要外围设备的轴角信息(它只是我们人类有时需要一个实际的旋转轴和角度,计算机并不在乎),你仍然可以使用它,但是对于内部表示和计算而言,四元数或矩阵是一个更好的选择。

如果四元数看起来有点沉重,他们的“3维复数”解释,不要打扰他们的确切数学基础。刚开始了解他们如何工作以及如何使用它们。实际上,它们只是一种轴角表示法,但具有隐式编码的正弦和余弦,这是高效转换和计算所需的。

0

对于使用四元数的情况以及有时优先于矢量的潜在原因,请参见this very intersting article。在this lengthy but insightful thread你会发现对四元数的有用性的反对意见。

TL; DR - 作者的观点是我们并不真的需要quaterions,但是由于它们错综复杂的性质,它们似乎对程序员非常有吸引力。所有使用四元数表达的操作都可以使用矢量来表示。这个观点虽然颇具争议。

+2

那么,这篇文章必须采取一粒盐,忽略了三角函数的低效率和事实,3D中的旋转计算并不意味着被人理解。当然,人们也可以使用矩阵,但轴角表示远远不如两者,因为它只是在人机外设中需要(如果需要的话)。 –