gpt4 book ai didi

3d - 四元数在 3d 模型上的加、减、除运算

转载 作者:行者123 更新时间:2023-12-02 00:00:07 24 4
gpt4 key购买 nike

我只是在 3D 游戏编程中更深入地使用四元数(是的,我了解矩阵,它们也很好,但我们总是必须学习一些新东西),所以,我们可以像这样旋转一些对象Pout = q*Pin*conjug(q),其中 q 是四元数,Pin 是 Vector3 类的对象(假设我们正在使用某个框架,其中为我们定义了此类),conjug(q) 是共轭后的 q 四元数,最后,Pout 是新的 Vector3 的对象,这是我们在旋转初始 Vector3 的对象 Pin< 后得到的 某个角度 alfa(或 theta,无论你喜欢什么)。另外,我知道有一种方法可以组合旋转,如下所示:q_final = q2*q1(这表示按 alfa1 角度旋转,然后按 alfa2 角度旋转)。最后,点积表示球体中两个四元数之间的角度。这对我来说很清楚。我的问题涉及除法、加法和减法等问题。

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

预先感谢您的回答。

p.s.如果您(DarenW、bensiu、Dharmendra、Uwe Keim、Jennis)无法理解这个问题,请留下这个话题。也许有人会有答案。谢谢。

最佳答案

如您所知,四元数可以用 4x4 实矩阵来识别。四元数乘法、标量乘法和加法通过此标识保留(参见http://en.wikipedia.org/wiki/Quaternion#Matrix_representations)。因此,将两个四元数转换为 4x4 矩阵,将它们相加,然后将它们转换回来与将它们相加相同。乘法也是如此。

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

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

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

关于3d - 四元数在 3d 模型上的加、减、除运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13148113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com