切换四元数的轴和手性?
Switch axes and handedness of a quaternion?
我有一个四元数,来自具有以下内容的系统:
Right handed.
Forward direction: Y axis
Right direction: X axis
Up direction: Z axis
我需要将其转换为坐标系:
left-handed.
Forward direction: X axis
Right direction: Y axis
Up direction: Z axis
我试过取消轴和角度,我试过切换值,我无法让它工作。非常感谢所有帮助!我在 C# 中工作,
Microsoft.Xna.Quaternion.
四元数是四个值的结构(w, x, y, z)
。如果表示旋转,则w = cos(phi/2)
(phi
为旋转角度)和(x, y, z) = sin(phi/2) * (ax, ay, az)
((ax, ay, az)
为旋转轴)。
为了将四元数转换到另一个系统,只需转换旋转轴即可。对于您的示例,转换是:
/ 0 1 0 \
T = | 1 0 0 |
\ 0 0 1 /
最后,由于你正在改变惯用手,你必须反转四元数,否则它会向错误的方向旋转。总结一下,转换后的四元数是:
(w*, x*, y*, z*) = (w, -y, -x, -z)
总的来说:
(x*, y*, z*) = det(T) T (x, y, z) //Assuming column vectors
我有一个四元数,来自具有以下内容的系统:
Right handed.
Forward direction: Y axis
Right direction: X axis
Up direction: Z axis
我需要将其转换为坐标系:
left-handed.
Forward direction: X axis
Right direction: Y axis
Up direction: Z axis
我试过取消轴和角度,我试过切换值,我无法让它工作。非常感谢所有帮助!我在 C# 中工作,
Microsoft.Xna.Quaternion.
四元数是四个值的结构(w, x, y, z)
。如果表示旋转,则w = cos(phi/2)
(phi
为旋转角度)和(x, y, z) = sin(phi/2) * (ax, ay, az)
((ax, ay, az)
为旋转轴)。
为了将四元数转换到另一个系统,只需转换旋转轴即可。对于您的示例,转换是:
/ 0 1 0 \
T = | 1 0 0 |
\ 0 0 1 /
最后,由于你正在改变惯用手,你必须反转四元数,否则它会向错误的方向旋转。总结一下,转换后的四元数是:
(w*, x*, y*, z*) = (w, -y, -x, -z)
总的来说:
(x*, y*, z*) = det(T) T (x, y, z) //Assuming column vectors