首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将3个轴向量转换为轴/角度

将3个轴向量转换为轴/角度
EN

Stack Overflow用户
提问于 2015-01-25 18:54:25
回答 1查看 1K关注 0票数 2

我有这个源代码,可以旋转三个轴在X,Y和Z上对齐:

代码语言:javascript
复制
    Quaternion<float> orientation = transform.getOrientation();
    Vector3<Vector3<float>> axis(
        orientation.rotate(Vector3<float>(1.0, 0.0, 0.0)),
        orientation.rotate(Vector3<float>(0.0, 1.0, 0.0)),
        orientation.rotate(Vector3<float>(0.0, 0.0, 1.0))
    );

从‘轴’变量,我想重建四元数。我有一个四元数构造函数,它允许我从一个轴和一个角度来构造它。

我该怎么做呢?提前谢谢你。

EN

Stack Overflow用户

发布于 2015-02-11 02:24:48

维基百科上有一个很好的页面描述了Quaternions and spatial rotation。具体地说,“与矩阵表示法相互转换”一节。

一定要注意下面这一点,引用自该页面,“在将旋转矩阵转换为四元数时必须小心,因为当旋转矩阵的迹(对角线元素的和)为零或非常小时,几种简单的方法往往不稳定。”

通常,从旋转矩阵(实际上就是您构建的矩阵)转换为四元数不是一个好主意。旋转矩阵必须是一个特殊的正交矩阵,它是所有可能的3x3矩阵的一个非常小的子集。在计算矩阵时,您几乎总是会丢失一些精度,因此它不会是精确正交的。事实上,这也是四元数更适合于表示三维旋转的原因之一。一般来说,如果你能避免转换,只使用四元数,你会过得更好。

该页面上有一个算法,它提供了一个稳定的方法,可能足以满足您的目的。但从个人经验来看,我可以告诉你,在大多数情况下,你应该预料到在操作中会失去一些精度。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28135576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档