告诉我,如果我错了。
我开始使用四元数。使用旋转矩阵4 x 4(在OpenGL中使用),我可以计算模型视图矩阵,将当前模型视图与旋转矩阵相乘。旋转矩阵来自四元数。
四元数是方向向量(甚至未标准化)和旋转角度。结果旋转取决于方向矢量模块和w四元数组件。
但为什么我应该使用四元数而不是欧拉轴/角度符号?后者更易于可视化和管理......
我发现的所有信息都可以通过这篇美丽的文章进行综合:
答案 0 :(得分:4)
与欧拉角不同,四元数不会受gimbal lock的影响。
答案 1 :(得分:4)
为什么使用四元数更好是在文章中解释。
答案 2 :(得分:2)
四元数通常用于计算简单性 - 使用四元数时组合变换等操作更容易(也更快)。引用您链接的维基百科页面,
结合两次连续旋转, 每个由欧拉轴和 角度,并不简单,并且在 事实并不符合法律 矢量加法,这表明 有限的旋转并不是真的 载体。最好雇用 方向余弦矩阵(DCM),或 张量或四元数符号, 计算产品,然后 转换回欧拉轴和角度。
它们也不会遇到轴/角度形式常见的问题gimbal lock。
答案 3 :(得分:2)
我不同意四元数更容易可视化,但使用它们的主要原因是它很容易连接旋转而没有“矩阵蠕变”。
答案 4 :(得分:1)
在您想要围绕可以轻松计算的特定轴旋转的场景中,四元数更容易可视化,管理和创建。确定单个旋转角度比将旋转分解为多个角度要容易得多。
对OP的修正:向量表示旋转轴,而不是方向,旋转分量是半角的余弦,而不是角度本身。
答案 5 :(得分:0)
简短的回答是,轴/角度符号最初看起来似乎是最合理的表示,但实际上,四元数减轻了轴/角度符号所带来的许多问题。