转换四元数的轴和手性
本文关键字:四元数 转换 | 更新日期: 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