12得票5回答
四元数与数值稳定性

我正在学习单位四元数以及如何使用它们表示和组合旋转。维基百科称它们比矩阵表示更具数值稳定性,但没有给出参考。有人可以向我解释一下(最好附上一些数学推理),为什么在处理旋转时(例如OpenGL应用程序),使用单位四元数比旋转矩阵更具数值稳定性?这只是因为避免万向节锁吗?

10得票5回答
将 glm::lookat 矩阵转换为四元数并再次转回矩阵

我正在使用glm创建一个相机类,但在使用lookat函数时遇到了一些问题。我使用四元数来表示旋转,但想要使用glm预先编写的lookat函数以避免重复代码。这是我的当前的lookat函数:void Camera::LookAt(float x, float y, float z) { ...

17得票2回答
在一个轴上旋转四元数?

我有一个被四元数旋转的模型。我只能设置旋转,无法添加或减少任何内容。我需要获取一个轴的值,然后在其上添加一个角度(也许是度数或弧度),然后重新添加修改过的四元数。 如何做到这一点?(对每个轴作回答)。

27得票8回答
C/C++中的四元数库

有没有适用于C/C++的四元数计算库? 另外注意:是否有好的教程/示例?我已经谷歌搜索并浏览了前几页,但也许您有来自计算机科学或数学课程的示范/实验可以分享吗? 谢谢。

10得票4回答
四元数相机

我尝试使用四元数的数学方法实现一个FPS相机。我存储了一个叫做_quat的旋转四元数变量,并在需要时将其乘以另一个四元数。以下是一些代码:void Camera::SetOrientation(float rightAngle, float upAngle)//in degrees { ...

14得票4回答
欧拉角转四元数, 然后四元数转欧拉角

我正在使用lib glm (http://glm.g-truc.net/)测试四元数,但是我遇到了一个问题;当我将欧拉角转换为四元数然后立即将四元数转换为欧拉角时,我的结果与我的初始欧拉角完全不同。这正常吗?可能是因为旋转不是可交换的吗? 测试代码:#include <glm\quat...

21得票1回答
将方向向量转换为四元数旋转

我可以找到很多关于将四元数转换为方向向量的问题,但没有关于从向量转换回四元数的问题,这让我觉得我做错了什么,但请耐心听我解释。 我的目标很简单,就是使用箭头模型显示定向光源的方向。 定向光源的方向是一个单位向量,但模型是通过四元数旋转的。 那么...我该如何旋转这个模型来匹配光线的方向呢...

48得票5回答
绕轴旋转的四元数旋转部件

我在这个主题上找不到任何好的信息。基本上,我想找到一个四元数旋转的组成部分,它围绕着给定的轴(不一定是X、Y或Z - 任意单位向量)旋转。有点像将四元数投影到矢量上。因此,如果我要求绕某个与四元数轴平行的轴旋转,我会得到相同的四元数。如果我要求绕四元数轴正交的轴旋转,我会得到一个单位四元数。中...

9得票3回答
Yaw、Pitch和Roll分别与Heading、Pitch和Bank相同吗?

我有两个不同的系统(引擎A,引擎B)。引擎A(运动追踪软件)生成(偏航,俯仰,翻滚),而引擎B(Cinema 4D)需要(航向,俯仰,倾斜)。 我的研究结果表明这两个系统之间没有区别。 Yaw Pitch Roll Heading Pitch Bank Y X ...

11得票2回答
使用四元数“观察”一个物体

所以我现在正在尝试创建一个函数,该函数将获取两个3D点A和B,并为我提供表示所需旋转的四元数,使得点A“看向”点B(如果您愿意,则点A的本地Z轴通过点B)。 我最初发现了这篇文章,其中排名第一的答案似乎为我提供了一个很好的起点。然后我实施了以下代码;不像原始答案建议的那样假设默认的(0,0,...