旋转矢量与四元数
回答
四元更容易计算着,对于课程的计算机(作为一个人,你不应该使用3D旋转打扰反正):
会怎么做时要连接的两个旋转你做在向量表示?您必须将它们转换为四元数或矩阵形式(使用昂贵的三角函数)才能做到这一点(并且可能会返回),而使用经典四元数乘法可以有效地将四元数连接起来。
当您想要使用矢量格式的旋转来旋转点/矢量,或将它作为矩阵发送给GL/D3D时,您会做什么?将其转换为矩阵(再次使用昂贵的三角函数)。另一方面,四元数相当有效地转换成矩阵,因为它已经编码了所需的正弦和余弦。
所以矩阵和四元数是更合适的旋转表示。从这两个四元数更紧凑,他们也很容易转换成轴角表示(再回来),虽然使用trigonometrics。所以如果你需要外围设备的轴角信息(它只是我们人类有时需要一个实际的旋转轴和角度,计算机并不在乎),你仍然可以使用它,但是对于内部表示和计算而言,四元数或矩阵是一个更好的选择。
如果四元数看起来有点沉重,他们的“3维复数”解释,不要打扰他们的确切数学基础。刚开始了解他们如何工作以及如何使用它们。实际上,它们只是一种轴角表示法,但具有隐式编码的正弦和余弦,这是高效转换和计算所需的。
对于使用四元数的情况以及有时优先于矢量的潜在原因,请参见this very intersting article。在this lengthy but insightful thread你会发现对四元数的有用性的反对意见。
TL; DR - 作者的观点是我们并不真的需要quaterions,但是由于它们错综复杂的性质,它们似乎对程序员非常有吸引力。所有使用四元数表达的操作都可以使用矢量来表示。这个观点虽然颇具争议。
那么,这篇文章必须采取一粒盐,忽略了三角函数的低效率和事实,3D中的旋转计算并不意味着被人理解。当然,人们也可以使用矩阵,但轴角表示远远不如两者,因为它只是在人机外设中需要(如果需要的话)。 –
- 1. 使用四元数去旋转矢量
- 2. 将方向矢量转换为四元数旋转
- 3. 将四元数完全旋转为矢量
- 4. 用四元数围绕一个轴旋转矢量
- 5. 使用旋转四元数将3d矢量值旋转到单个轴
- 6. 四元数如何与矢量相乘?
- 7. 相机与四元数的旋转
- 8. 四元数旋转误差
- 9. 四元数旋转opengl
- 10. 四元数 - 旋转到
- 11. 四元数对象旋转
- 12. 四元数的旋转?
- 13. 四元数三轴旋转
- 14. Unity旋转和四元数
- 15. 旋转矢量
- 16. 与其他矢量旋转的矢量作为轴
- 17. 矩阵旋转到四元数
- 18. java四元数三维旋转实现
- 19. 关于glm四元数旋转
- 20. 四元数旋转x轴45度
- 21. 用四元数旋转对象
- 22. 用四元数旋转模型
- 23. 从四元数到OpenGL旋转
- 24. 如何缩放四元数的旋转
- 25. 沿着轴旋转四元数
- 26. 拆分四元数到轴旋转
- 27. 四元数反转向量
- 28. 从初始和最终旋转四元数获得旋转轴
- 29. 用glm旋转2D矢量
- 30. AS3:旋转到矢量
[检查此链接的详细信息](http://math.stackexchange.com/questions/1732908/quaternion-for-beginner/1732961#1732961) –