Matrix中的同时旋转

时间:2013-03-09 01:42:54

标签: c opengl

任何人都可以(再次)帮助我吗?我有一个像这样的矩阵:

1.0  0.0  0.0  2.5
0.0  1.0  0.0  0.0
0.0  0.0  1.0  0.0
0.0  0.0  0.0  1.0

如何在X轴上旋转20°,在Y轴上旋转-128°,在Z轴上旋转72.1°?

非常感谢

1 个答案:

答案 0 :(得分:4)

  

我希望在X轴上旋转...,在Y轴上旋转......在Z轴上同时旋转

你做不到。您要求的是数学上未定义的。基本轮换可以组合的顺序有6种排列......

  • X Y Z
  • X Z Y
  • Y X Z
  • Y Z X
  • Z X Y
  • Z Y X

并且每个人都有不同的结果。轮换不会像你想象的那样工作。三维空间中的数学旋转形成2阶的特殊单一群,也写为SU(2)。 SU(2)中的每个旋转都是唯一的,但可以通过在SU(2)中组合无数个其他旋转来构造。

在您的特定情况下,问题没有特定的解决方案。您可以做的最好的事情是选择一个特定的执行顺序并将旋转一个接一个地应用到现有的坐标系上,方法是形成相应的旋转矩阵并乘以代表前一个坐标系/变换步骤的矩阵。