告诉我我是否错了。
我开始使用四元数。使用 4 x 4 的旋转矩阵(在 OpenGL 中使用),我可以计算模型视图矩阵,将当前模型视图乘以旋转矩阵。旋转矩阵是从四元数推导出来的。
四元数是一个方向向量(甚至没有归一化)和一个旋转角度。产生的旋转取决于方向矢量模块和 w 四元数分量。
但是为什么我应该使用四元数而不是欧拉轴/角度符号呢?后者更易于可视化和管理......
我发现的所有信息都可以与这篇美丽的文章综合起来:
告诉我我是否错了。
我开始使用四元数。使用 4 x 4 的旋转矩阵(在 OpenGL 中使用),我可以计算模型视图矩阵,将当前模型视图乘以旋转矩阵。旋转矩阵是从四元数推导出来的。
四元数是一个方向向量(甚至没有归一化)和一个旋转角度。产生的旋转取决于方向矢量模块和 w 四元数分量。
但是为什么我应该使用四元数而不是欧拉轴/角度符号呢?后者更易于可视化和管理......
我发现的所有信息都可以与这篇美丽的文章综合起来:
与欧拉角不同,四元数不会受到万向节锁定的影响。
为什么最好使用四元数在文章中有解释。
我不同意四元数更容易可视化,但使用它们的主要原因是在没有“矩阵蠕变”的情况下连接旋转很容易。
四元数通常用于计算简单性 - 在使用四元数时执行诸如组合转换之类的事情要容易得多(也更快)。要引用您链接的维基百科页面,
组合两个连续的旋转,每个旋转都由欧拉轴和角度表示,并不简单,实际上也不满足向量加法定律,这表明有限旋转根本不是真正的向量。最好使用方向余弦矩阵 (DCM)、张量或四元数表示法,计算乘积,然后转换回欧拉轴和角。
它们也不会遇到轴/角度形式常见的问题,万向节锁定。
在您想要围绕可以轻松计算的特定轴旋转的场景中,四元数更易于可视化、管理和创建。确定单个旋转角度比将旋转分解为多个角度要容易得多。
对 OP 的更正:向量表示旋转轴,而不是方向,旋转分量是半角的余弦,而不是角度本身。
简短的回答是轴/角度符号最初看起来是最合理的表示,但实际上四元数缓解了轴/角度符号带来的许多问题。