当提供轴和四元数时,我如何获得 GLM 的角度?

Posted

技术标签:

【中文标题】当提供轴和四元数时,我如何获得 GLM 的角度?【英文标题】:When supplied with an axis and quaternion, how can I get the angle with GLM? 【发布时间】:2013-01-14 16:44:30 【问题描述】:

我正在使用 GLM 四元数来表示对象的方向。

基本上,我想添加从 quat 中提取轴角度的功能。我不知道这是否是我需要做的;但是这样做的一个用途是尝试在 y 轴上旋转立方体,以增加我需要首先获得旧角度的角度,对吧?所以

cube.setOrientation(cube.getAngleOnAxis(0, 1, 0) + 5);

这应该使立方体旋转五度,对吧?

我遇到的问题是实现 getAngleOnAxis 函数。有没有可以提取角度的GLM函数?

我不确定我是否真的想到了正确的解决方案,所以如果有经验的人能更简单地解释一下,那就太好了。谢谢!

【问题讨论】:

那行文字很重要,因为我需要对答案进行澄清和解释,@genpfault。回滚。 【参考方案1】:

要增加角度,我需要先获取旧角度,对吧?

没有。 whole point of using a quaternion 是必须这样做。您只需将新的四元数乘以旧的四元数,将结果归一化,这就是您的新方向。

【讨论】:

感谢您的回答。我没有意识到。

以上是关于当提供轴和四元数时,我如何获得 GLM 的角度?的主要内容,如果未能解决你的问题,请参考以下文章

Unity四元数

Unity四元数

使用 `glm::rotate` 和四元数向上旋转 3D 方向向量

Unity复杂的旋转-欧拉角和四元数

如何理解glm中四元数与向量相乘函数的写法

glm 在 Y 轴上旋转四元数使物体变形