gpt4 book ai didi

math - 基于四元数的 3D 相机应该累积四元数还是欧拉角?

转载 作者:行者123 更新时间:2023-12-03 14:52:57 25 4
gpt4 key购买 nike

所以我编写了一个面向新程序员的基于四元数的 3D 相机,因此他们非常容易集成和开始使用。

在我开发它时,起初我会将用户输入作为欧拉角,然后根据该帧的输入生成一个四元数。然后我将相机的四元数乘以我们为输入生成的四元数,理论上应该简单地将输入旋转添加到相机旋转的当前状态,一切都会变得有趣和快乐。让我们称之为:累积四元数,因为我们只存储和添加四元数。

但是我注意到这个方法有问题。我使用它越多,即使我只在一个欧拉角上旋转,比如偏航,它会在一些迭代中开始渗入另一个,比如 Pitch。这是轻微的,但相当 Not Acceptable 。

所以我做了一些更多的研究,发现一篇文章说最好累积欧拉角,所以相机将其当前旋转存储为欧拉角,并且每帧简单地将输入添加到它们中。然后我在每一帧中从它们生成一个四元数,这又用于生成我的旋转矩阵。这解决了旋转渗入不正确轴的问题。

那么任何 Stackoverflow 成员对这个问题有任何见解吗?这是做事的正确方式吗?

最佳答案

乘以四元数会遇到浮点舍入问题的累积(即使像 45 度这样的简单角度也不准确)。这是合成旋转的好方法,但每个四元数组件的精度都会随着时间的推移而下降。渗漏是一种副作用,视觉上更糟糕的是您的四元数可能会开始包含比例因子 - 要恢复它,无论如何您都必须重新归一化回欧拉角。定点欧拉角不会累积舍入。

每帧重新计算四元数是最少的。我不会费心去优化它。在重新归一化以恢复准确度之前,您可能允许累积一些四元数,但这确实不值得付出努力。

关于math - 基于四元数的 3D 相机应该累积四元数还是欧拉角?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/319189/

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