我有一个可以沿 x、y 和 z 轴自由旋转的 3d 对象,然后将其保存为变换矩阵。在旋转顺序未知且对象旋转超过 3 次的情况下(例如:-如果我将对象旋转 x-60 度、y-30 度、z-45 度,然后再旋转 x->30 度),是否可以提取从变换矩阵旋转的角度?我知道如果旋转序列已知,则可以获得角度,但是如果我只有最终的变换矩阵而没有其他东西,是吗可以从变换矩阵中获得旋转的角度(x、y 和 z)吗?
问问题
1894 次
我有一个可以沿 x、y 和 z 轴自由旋转的 3d 对象,然后将其保存为变换矩阵。在旋转顺序未知且对象旋转超过 3 次的情况下(例如:-如果我将对象旋转 x-60 度、y-30 度、z-45 度,然后再旋转 x->30 度),是否可以提取从变换矩阵旋转的角度?我知道如果旋转序列已知,则可以获得角度,但是如果我只有最终的变换矩阵而没有其他东西,是吗可以从变换矩阵中获得旋转的角度(x、y 和 z)吗?
欧拉角转换是一个众所周知的话题。只需标准化矩阵方向向量,然后使用类似这个c 源代码的东西。
矩阵是事物的当前状态,它不知道过去的转换是什么。它不知道矩阵是如何构建的。您可以将矩阵放入并将其分解为您喜欢的任何部分,只要: