我是一名物理学家,并且一直在学习一些编程,并且遇到很多人使用四元数进行旋转而不是以矩阵/向量形式编写东西.
在物理学中,有很好的理由我们不使用四元数(尽管偶尔讲述汉密尔顿/吉布斯/等的奇怪故事).物理学要求我们的描述具有良好的分析行为(这具有精确定义的含义,但是在一些相当技术的方面远远超出了正常介绍类中教导的内容,所以我不会详细讨论).事实证明,四元数没有这种好的行为,所以它们没用,而矢量/矩阵也没用,所以我们使用它们.
然而,仅限于刚性旋转和不使用任何分析结构的描述,可以以任一方式(或其他一些方式)等效地描述3D旋转.
一般情况下,我们只是想要一个点X =(X,Y,Z)的映射到一个新的点X '=(X',Y",Z ')受约束X 2 = X' 2.并且有很多事情可以做到这一点.
天真的方法是只绘制这个定义的三角形并使用三角学,或者使用点(x,y,z)和向量(x,y,z)和函数f(X)= X'之间的同构,使用一些其他方法(x,y,z)T(a,b,c)(x',y',一个矩阵MX = X',或使用四元数,或沿旧方法投射旧矢量的分量. z')等
从数学的角度来看,这些描述在这个设置中都是等价的(作为一个定理).它们都具有相同数量的自由度,相同数量的约束等.
那么为什么四元数似乎比矢量更受欢迎呢?
我看到的通常原因是没有云台锁或数字问题.
没有万向节锁定论证似乎很奇怪,因为这只是欧拉角的问题.它也只是一个坐标问题(就像极坐标中r = 0处的奇点(Jacobian松散等级)),这意味着它只是一个局部问题,并且可以通过切换坐标,旋转出简并性来解决,或使用两个重叠的坐标系.
我对数字问题不太确定,因为我不清楚这些(以及任何替代方案)是如何实现的.我已经读过,对四元数进行重新规范化比对旋转矩阵进行重新规范化更容易,但这只适用于一般矩阵; 一个旋转具有额外的约束,使得这些约束变得无足轻重(这些约束被内置到四元数的定义中)(事实上,这必须是真的,因为它们具有相同数量的自由度).
那么使用四元数而不是向量或其他替代方法的原因是什么?