3d 四元数';三维模型上的加法、减法和除法运算

3d 四元数';三维模型上的加法、减法和除法运算,3d,quaternions,graphics3d,3d,Quaternions,Graphics3d,我只是在3D游戏编程中对四元数的使用进行了更深入的研究(是的,我知道矩阵,它们还可以,但我们总是需要学习一些新的东西),所以,我们可以像这样旋转一些对象Pout=q*Pin*conjug(q),其中q是四元数,Pin是(假设我们使用的是一个框架,这个类是为我们定义的)Vector3类,共轭(q)是共轭后的q四元数,最后,Pout是新Vector3的对象,它是在旋转初始Vector3的对象Pin一定角度alfa(或θ,随便你喜欢)后得到的。此外,我知道有一种方法可以组合旋转,例如:q_final=

我只是在3D游戏编程中对四元数的使用进行了更深入的研究(是的,我知道矩阵,它们还可以,但我们总是需要学习一些新的东西),所以,我们可以像这样旋转一些对象
Pout=q*Pin*conjug(q)
,其中q是四元数,Pin是(假设我们使用的是一个框架,这个类是为我们定义的)Vector3类,
共轭(q)
是共轭后的q四元数,最后,
Pout
是新Vector3的对象,它是在旋转初始Vector3的对象
Pin
一定角度alfa(或θ,随便你喜欢)后得到的。此外,我知道有一种方法可以组合旋转,例如:
q_final=q2*q1
(这表示按alfa1旋转,然后按alfa2角度旋转)最后,点积表示两个四元数在球体中的夹角。这对我来说很清楚。我的问题涉及除法、加法和减法

我的问题是:有谁能告诉我,它们(四元数上的除法、加法、减法运算)在3D编程中代表什么?它们对3D模型有何影响

事先谢谢你的回答


p.s.如果你(DarenW、bensiu、Dharmendra、Uwe Keim、Jennis)无法理解此问题,请离开此主题。可能有人会有答案。谢谢。

如您所知,四元数可通过4x4实矩阵识别。四元数乘法、标量乘法和加法由此标识保留(请参阅).因此,将两个四元数转换为4x4矩阵,相加,再将它们转换回原来的状态,就如同将它们相加一样。乘法也是如此

四元数A除以四元数B无非是A乘以B的乘法逆。这相当于A的矩阵形式乘以B的矩阵形式的逆

请注意,刚体旋转(无剪切或缩放)由单位长度四元数表示。因此,可以通过乘以单位四元数来累积旋转。在这种情况下,加法没有那么有用


最后,我们在图形中使用四元数的主要原因是插值关键帧(例如)。也就是说,如果我们知道k位置处所需的旋转,我们可以插值四元数,例如使用样条曲线,从而生成四元数值曲线。每个值C(t)是单位四元数,因此表示中间旋转。齐次矩阵的关键帧插值更难,因为并非所有4x4矩阵都表示齐次变换:插值过程可能会添加缩放、剪切等。

可能与True重复,但该问题已解决,我个人不同意该问题n是模糊的。它问了一个关于3d图形中一个非常重要的工具的好问题。作为图形和几何问题的经常参与者,我会要求有人保护这个问题。谢谢。很长一段时间以来,我一直在不同的手册中寻找这种解释。但大多数都只是关于乘法。