gpt4 book ai didi

matrix - 为什么使用四元数进行旋转?

转载 作者:行者123 更新时间:2023-12-03 04:50:19 29 4
gpt4 key购买 nike

我是一名物理学家,一直在学习一些编程,并且遇到很多人使用四元数进行旋转,而不是以矩阵/向量形式编写内容。

在物理学中,我们有充分的理由不使用四元数(尽管偶尔会讲述有关汉密尔顿/吉布斯等的奇怪故事)。物理学要求我们的描述具有良好的分析行为(这有一个精确定义的含义,但在一些相当技术性的方式上远远超出了正常入门类(class)中教授的内容,所以我不会详细介绍)。事实证明,四元数没有这种良好的行为,因此它们没有用处,而向量/矩阵则有这种良好的行为,因此我们使用它们。

但是,仅限于刚性旋转和不使用任何解析结构的描述,3D 旋转可以用任何一种方式(或其他几种方式)进行等效描述。

一般来说,我们只想要一个点 X = (x, y, z) 到新点 X' = (x', y', z') 的映射,并受到 X2< 的约束/sup> = X'2。有很多事情可以做到这一点。

简单的方法是只绘制它定义的三角形并使用三角函数,或者使用点 (x, y, z) 和向量 (x, y, z) 之间的同构以及函数 f(X) = X' 和矩阵 MX = X',或使用四元数,或使用某种其他方法沿新向量投影旧向量的分量 (x, y, z)T。(a,b ,c) (x',y',z') 等

从数学的角度来看,这些描述在这种情况下都是等价的(作为定理)。它们都具有相同数量的自由度、相同数量的约束等。

那么为什么四元数似乎比向量更受青睐?

我看到的常见原因是没有万向节锁或数字问题。

无万向节锁的论点似乎很奇怪,因为这只是欧拉角的问题。它也只是一个坐标问题(就像极坐标中r=0处的奇点(雅可比行列式失去秩)),这意味着它只是一个局部问题,可以通过切换坐标、旋转出简并性来解决,或使用两个重叠的坐标系。

我不太确定数字问题,因为我不详细知道这两个(以及任何替代方案)将如何实现。我读过,重新归一化四元数比对旋转矩阵进行归一化更容易,但这仅适用于一般矩阵;旋转有额外的约束,使这一点变得微不足道(这些约束被内置在四元数的定义中)(事实上,这必须是正确的,因为它们具有相同数量的自由度)。

那么使用四元数而不是向量或其他替代方案的原因是什么?

最佳答案

万向节锁是一个原因,尽管正如您所说,这只是欧拉角的问题并且很容易解决。当需要考虑内存时,仍会使用欧拉角,因为您只需要存储 3 个数字。

对于四元数与 3x3 旋转矩阵相比,四元数在大小(4 个标量与 9 个标量)和速度(四元数乘法比 3x3 矩阵乘法快得多)方面具有优势。

请注意,所有这些旋转表示都在实践中使用。欧拉角使用最少的内存;矩阵使用更多内存,但不受万向节锁定的影响,并且具有良好的分析特性;四元数在两者之间取得了很好的平衡,重量轻,但没有万向节锁。

关于matrix - 为什么使用四元数进行旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8919086/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com