我一直在为即将到来的项目研究四元数,并遇到了一个我无法理解的概念问题。
四元数标准化的方法如下:
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
Run Code Online (Sandbox Code Playgroud)
直接,就像标准化任何其他向量一样。但我的问题是这种归一化方法如何保留相同的旋转信息。使用表示轴角表示的四元数的定义,如下所示,
angle = 2 * acos(q0)
x = qx / sqrt(1-q0*q0)
y = qy / sqrt(1-q0*q0)
z = qz / sqrt(1-q0*q0)
Run Code Online (Sandbox Code Playgroud)
由于归一化操作会同等缩放 x、y、z 值,因此旋转所围绕的轴永远不会改变。但角度本身的值会随着归一化操作而发生巨大变化。
那么使用保留 q0 值并仅调整其他点以达到归一化的方法不是更有意义吗?
quaternions ×1