四元数到矩阵仅旋转一个轴

时间:2019-11-20 03:29:48

标签: math

我有一个四元数,它同时包含三个轴(x,y,z)的旋转。

我想将此四元数转换为旋转矩阵,但仅将四元数或其他任何轴的Y轴上的旋转转换,而不能同时将所有三个轴转换。

1 个答案:

答案 0 :(得分:1)

可能的路线:

  • 通过四元数转换单位矢量X =(1,0,0)和Z =(0,0,1)
  • 称这些旋转向量(x0,x1,x2)和(z0,z1,z2)
  • 如果旋转将完全围绕Y进行,则我们将:
    • (x0,x1,x2)=(cos(theta),0,sin(theta))
    • (z0,z1,z2)=(-sin(theta),0,cos(theta))
    • 未使用的是(y0,y1,y2)=(0,1,0)
  • 所以,计算
    • c =(x0 + z2)/ 2
    • 和s =(x2-z0)/ 2
  • 然后归一化以获得c 2 + s 2 等于1
    • 范数= sqrt(c * c + s * s)
    • 如果规范!= 0:
      • c = c /规范
      • s = s /规范
      • (如果范数为零,则我们无能为力)
  • 角度将为atan2(c,s)
  • 旋转矩阵将为[[c,0,-s],[0,1,0],[s,0,c]]