「差异」两个四元数之间

发布于 2024-08-12 01:55:55 字数 224 浏览 7 评论 0原文

我在 Ogre 工作,但这是一个一般的四元数问题。

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

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

I'm working in Ogre, but it's a general quaternion problem.

I have an object, to which I apply a rotation quaternion Q1 initially. Later, I want to make it as if I initially rotated the object by a different quaternion Q2.

How do I calculate the quaternion which will take the object, already rotated by Q1, and align it as if all I did was apply Q2 to the initial/default orientation? I was looking at (s)lerping, but I am not sure if this only valid on orientations rather than rotations?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小矜持 2024-08-19 01:55:55

听起来您想要 Q1 乘以 Q2 的倒数。通过 Q1 的倒数进行变换会将对象旋转回其原始框架(如您所说的初始方向),然后通过 Q2 进行变换会将其旋转到新的方向。

请注意,四元数的标准定义以从右到左的乘法顺序应用转换,因此您需要将其计算为 Q = Q2*Q1^{-1}。

It sounds like you want the inverse of Q1 times Q2. Transforming by the inverse of Q1 will rotate the object back to its original frame (the initial orientation, as you say), and then transforming by Q2 will rotate it to its new orientation.

Note that the standard definition of a quaternion applies transformations in a right-to-left multiplication order, so you'll want to compute this as Q = Q2*Q1^{-1}.

娇俏 2024-08-19 01:55:55

可以这样想:

QTransition * QInitial = QFinal

通过将两边乘以 QInitial^{-1} (^{-1} 是四元数共轭)来求解 QTransition

QTransition = QFinal * QInitial^{-1}

就是这么简单。

Think of it this way:

QTransition * QInitial = QFinal

Solve for QTransition by multiplying both sides by QInitial^{-1} (^{-1} being the quaternion conjugate)

QTransition = QFinal * QInitial^{-1}

It's just that easy.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文