作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在为即将到来的项目研究四元数,但遇到了一个我无法解决的概念问题。
归一化四元数的方法如下:
q_mag = sqrt(q0^2+q1^2+q2^2+q3^2)
q0 = q0/q_mag
q1 = q1/q_mag
q2 = q2/q_mag
q3 = q3/q_mag
angle = 2 * acos(q0)
x = qx / sqrt(1-q0*q0)
y = qy / sqrt(1-q0*q0)
z = qz / sqrt(1-q0*q0)
最佳答案
数学答案:单位四元数表示 3D 空间中的旋转。任何其他(即:非单位)四元数不代表旋转,因此公式angle = 2 * acos(q0) 不适用于这些四元数。所以归一化时角度没有变化,因为你要归一化的四元数一开始并不代表旋转。
编程答案:浮点运算存在精度问题。这些问题会导致小错误,如果累积起来可能会变成大错误。当两个单位四元数相乘时,数学结果是另一个单位四元数。然而,单位四元数乘法的浮点实现可能会产生范数接近 1 但不等于 1 的四元数。在这种情况下,我们将对四元数进行归一化以纠正错误。当我们归一化时,我们将 q0 除以非常接近 1 的范数,因此 q0 的值没有重大变化。因为我们提前归一化,范数总是非常接近 1,我们不需要担心精度。
迟到的答案,但我希望它有所帮助。
关于quaternions - 在四元数归一化期间保持旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18710545/
我是一名优秀的程序员,十分优秀!