【问题标题】:Switch axes and handedness of a quaternion?切换四元数的轴和惯用手?
【发布时间】:2016-08-30 19:40:50
【问题描述】:

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

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.

【问题讨论】:

    标签: c# rotation xna game-engine quaternions


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 2019-09-18
      相关资源
      最近更新 更多