切换四元数的轴和左右手系?

3

我有一个四元数,来自以下系统:

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.
1个回答

3

四元数是由四个值 (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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接