转换四元数的轴和手性

本文关键字:四元数 转换 | 更新日期: 2023-09-27 18:05:02

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

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