我有一个XYZ的坐标系,我用欧拉角旋转,从X开始,然后是Y,然后是Z.我需要将这个旋转转换为它的等效XYZ旋转,但相对于另一个坐标系统,由四元数方向指定。不幸的是,我被困住了。
答案 0 :(得分:0)
没有简单的方法可以做到这一点,因为欧拉角只是在与旋转矩阵的乘积兼容的无穷小版本中。
在给定条件下最简单的方法是将现有角度转换为旋转的四元数,将两个四元数相乘,并从乘积中提取新的欧拉角。
一个有用的链接,收集许多(如果不是全部)轴旋转到四元数和反向变换:http://www.euclideanspace.com/maths/geometry/rotations/conversions/eulerToQuaternion/index.htm
用a,b,c表示围绕X,Y,Z轴旋转的半角,用(ca,sa)等表示相应的余弦 - 正弦对。然后围绕X轴以角度2a旋转对应于四元数
ca+sa*i
其中i,j,k是x,y,z方向上的基本四元数。旋转Rz(2c)* Ry(2b)* Rx(2a)对应于四元数
r=(cc+sc*k)*(cb+sb*j)*(ca+sa*i)
如果q是另一个单位四元数,那么对应于q的旋转的旋转基础是qiq',qiq',qkq',其中q'是q的共轭。目的是在这个新的基础上用轴旋转表示r。如果新的半角是u,v,w,则必须解决
r=(cw+sw*qkq')*(cv+sv*qjq')*(cu+su*qiq')
对于这些半角,由于qq'= 1 = q'q到
,这简化了q'rq=(cw+sw*k)*(cv+sv*j)*(cu+su*i)
现在您可以再次使用网站上的公式。