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

Math 四元数到矩阵旋转仅一个轴,math,Math,我有一个四元数,它同时包含三个轴(x,y,z)的旋转 我想将此四元数转换为旋转矩阵,但仅转换四元数或任何其他轴在Y轴上的旋转,而不同时转换所有三个轴。可能的路径: 通过四元数变换单位向量X=(1,0,0)和Z=(0,0,1) 称这些旋转向量为(x0,x1,x2)和(z0,z1,z2) 如果旋转完全围绕Y,我们会: (x0,x1,x2)=(cos(θ),0,sin(θ)) (z0,z1,z2)=(-sin(θ),0,cos(θ)) 未使用的是(y0,y1,y2)=(0,1,0) 那么,计算一

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

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

可能的路径:

  • 通过四元数变换单位向量X=(1,0,0)和Z=(0,0,1)
  • 称这些旋转向量为(x0,x1,x2)和(z0,z1,z2)
  • 如果旋转完全围绕Y,我们会:
    • (x0,x1,x2)=(cos(θ),0,sin(θ))
    • (z0,z1,z2)=(-sin(θ),0,cos(θ))
    • 未使用的是(y0,y1,y2)=(0,1,0)
  • 那么,计算一下
    • c=(x0+z2)/2
    • 和s=(x2-z0)/2
  • 然后归一化,使c2+s2等于1
    • 标准=sqrt(c*c+s*s)
    • 如果正常!=0:
      • c=c/标准
      • s=s/norm
      • (如果标准为零,我们也无能为力)
  • 角度应为atan2(c,s)
  • 旋转矩阵应该是[[c,0,-s],[0,1,0],[s,0,c]]

谢谢你的帮助,朋友。