问题标签 [quaternions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
44040 浏览

opengl - 将四元数旋转转换为旋转矩阵?

基本上,给定一个四元数(qx,qy,qz,qw)......我如何将它转换为 OpenGL 旋转矩阵?我也对哪个矩阵行是“向上”、“向右”、“向前”等感兴趣......我有一个四元数的相机旋转,我需要矢量......

0 投票
3 回答
3295 浏览

game-physics - 正交基的四元数

我有一个沿速度矢量移动的射弹物体。我需要确保对象始终面向速度矢量的方向。此外,我使用四元数而不是矩阵来表示对象旋转。

我知道第一步是找到一个正交基:

我如何将基础转换为旋转四元数?

解决方案

请注意,我想感谢 Noel Hughes 提供了答案,但我想用我自己的经验来澄清一下。伪代码如下:

四元数的最后一个元素是标量部分,前三个元素是虚部。此外,上面的伪代码假设您在“模型空间”中的对象指向正 x 轴。在我的例子中,对象实际上指向正 y 轴,在这种情况下,我进行了以下更改:

0 投票
3 回答
11831 浏览

math - 我可以从 Yaw/Pitch/roll 创建的两个四元数中插入旋转吗?

四元数适用于在它们之间插入旋转。到目前为止,一切都很好。

如果我有一个网络游戏,将旋转传输为 vector3f 就足够了,还是应该使用四元数?为了使游戏更流畅,我可能必须在最后发送的旋转和当前旋转之间进行插值。

但是我可以在从 Yaw/Pitch/Roll 创建的两个四元数之间插入旋转吗?

0 投票
2 回答
39694 浏览

math - 两个四元数之间的“差异”

我在食人魔工作,但这是一个普遍的四元数问题。

我有一个对象,我最初对其应用旋转四元数 Q1。后来,我想让它就像我最初用不同的四元数 Q2 旋转对象一样。

如何计算四元数,该四元数将采用已经由 Q1 旋转的对象,并将其对齐,就好像我所做的只是将 Q2 应用于初始/默认方向一样?我正在查看(s)lerping,但我不确定这是否仅在方向而不是旋转上有效?

0 投票
4 回答
982 浏览

math - 直观的 3D 数学资源

我最近一直在尝试寻找一些很好的介绍和解释的向量和四元数资源来提高我的 3D 技能,但遇到了一些麻烦。

我发现的大多数资源都倾向于跳过执行特定操作很有用的高级原因,而是直接深入到术语和证明中,这些术语和证明往往会很快分散我的注意力。

我发现更好的解释对各种数学主题有很好的解释,但是没有任何向量或四元数。

有谁知道任何高级向量和/或四元数教程?

0 投票
6 回答
8687 浏览

quaternions - 我什么时候需要使用四元数?

多年来我一直在执行 2D 和 3D 操作,包括图形,并且从未使用过四元数,所以我对它们没有感觉。我知道它们可用于在欧拉角中难以进行的某些操作,并且它们可用于找到最适合一组坐标(X1,X2...XN,X=(xyz))所需的旋转到另一个(X1',X2'... XN')。

有没有四元数必不可少的地方?是否有让解决方案更优雅或更高效的地方?

0 投票
2 回答
3662 浏览

opengl - 如何在opengl中使用四元数围绕屏幕中心旋转?

我正在尝试实现轨迹球/轨迹球旋转,但旋转中心有问题。无论如何,我希望中心成为我屏幕的中心。

让我解释一下我到目前为止所做的事情。

我创建了一个四元数(旋转轴:vector_start x vector_end,角度:vector_start * vector_end)

从那个四元数中,我创建了一个旋转矩阵,以便将它与 glMultMatrixf(matrix) 一起使用并获得所需的旋转。

问题是,虽然我的模型似乎是轨迹球旋转,但它应该始终围绕其本地原点旋转。无论其本地原点位于何处,如何使其围绕屏幕中心旋转?

我想该问题的解决方案可能是在屏幕中心平移整个旋转轴,然后应用旋转,但这可能吗?我在这里想念什么吗?

0 投票
6 回答
6015 浏览

matrix - 四元数和变换矩阵

告诉我我是否错了。

我开始使用四元数。使用 4 x 4 的旋转矩阵(在 OpenGL 中使用),我可以计算模型视图矩阵,将当前模型视图乘以旋转矩阵。旋转矩阵是从四元数推导出来的。

四元数是一个方向向量(甚至没有归一化)和一个旋转角度。产生的旋转取决于方向矢量模块和 w 四元数分量。

但是为什么我应该使用四元数而不是欧拉轴/角度符号呢?后者更易于可视化和管理......

我发现的所有信息都可以与这篇美丽的文章综合起来:

http://en.wikipedia.org/wiki/Rotation_representation

0 投票
1 回答
1832 浏览

math - 欧拉角和四元数方向

如何仅将 wintracker II 设备的四元数方向输出转换为欧拉角输出。因为 Wintracker II 设备输出欧拉角和四元数方向。我只想输出欧拉角。

0 投票
2 回答
3321 浏览

c# - 将本地四元数旋转转换为全局(陀螺仪)

我需要一种方法来从本地获取在全局参考系中旋转的欧拉角。我正在使用 c#、wpf 3d 和陀螺仪。我在屏幕上有一个地球仪,它应该以与陀螺仪相同的方式移动。由于陀螺仪发送相对于自身的运动,我需要使用四元数来保持对象的状态并更新它,但我被卡住了。如果我执行以下操作:

IT 在一个轴上正确旋转。当我在一个方向上由 A 旋转,然后在另一个方向上由 B 旋转时,物体和陀螺仪的旋转不再是相同的方向,因为上述适用于绝对旋转(相对于世界)。

例如:

这是有效的,因为我总是在全局轴上通过键盘增加滚动、俯仰、偏航,即键盘值。陀螺仪在 LOCAL 轴上发送旋转。

切换四元数旋转的顺序无济于事