如何从变换矩阵中获取3D对象的角度旋转

时间:2013-01-18 08:48:43

标签: matrix 3d transform angle euler-angles

我有一个可以沿x,y和z轴自由旋转的3d对象,然后将其保存为变换矩阵。在旋转顺序未知并且物体旋转超过3次的情况下(例如: - 如果我旋转物体x-60度,y-30度,z-45度则再次x-> 30度,是否有可能提取从变换矩阵旋转的角度?。我知道如果旋转序列是已知的,可以获得角度,但如果我只有最终的变换矩阵,而我没有别的,是是否可以从变换矩阵中获得旋转角度(x,y和z)?

1 个答案:

答案 0 :(得分:2)

欧拉角转换是一个众所周知的话题。只需标准化矩阵方向向量,然后使用类似c source code的内容。

矩阵是事物的当前状态,它不知道过去的转变是什么。它不知道矩阵是如何构建的。你可以将矩阵带入并分解成你喜欢的任何部分,只要:

  1. 数据不重叠。例如:彼此之后的两个X圈彼此无法区分(无法知道它的1 2或3个不同的旋转是否相加)。
  2. 序列顺序已知
  3. 可以从数据中构建分解(例如,可以测量比例)