从 matrix4 获取旋转数据

Get rotation data from matrix4

为此我一直在网上搜索,虽然我发现了很多,但所有的解决方案似乎都不一样,所以:

谁能给我一个关于如何从 matrix4 结构中提取旋转数据(即 xyz)的简明解释。

我知道矩阵 4 用于保存有关平移、缩放和旋转的信息,但仅此而已。我正在为 iOS 编码并使用 GLKit。

并不是所有的线性变换都是旋转;并非所有旋转都可以表示为欧拉角。欧拉角表示也不是唯一的 - 既平凡(例如角度 a 和角度 a + 360 相同)又不唯一(例如当轴别名时)。由于欧拉角表示仅涵盖可能旋转的一个子集,而旋转只是可能矩阵的一个子集,因此转换并不总是可能的。

但是,如果您只是在谈论矩阵的一小部分,这些矩阵是旋转的并且可以用欧拉角表示,那么 this is probably the paper for you。从观察到只有一个角度对第一列中的第三个值有贡献开始,然后使用消去法和三角恒等式找到其余的角度。它讨论了在确定下一个角度时需要管理多个可能的解决方案的许多实例。