我正在研究Java中的OpenGL项目,它已经到了我想在自己的代码中创建转换矩阵的位置,所以我可以使用它们来做世界屏幕点转换,反之亦然。我创建了一个支持转换的Matrix类,这一切都非常好。但是,我实际上很难找出如何创建逆变换。如何创建逆转换矩阵
所以我的问题是这样的:
- 给定任意仿射(4×4)变换矩阵,你如何创建逆变换矩阵?有些矩阵是不可逆的?颠倒变换矩阵有什么限制和注意事项?
从我的研究中,我已经听说过这样做的各种方法,最简单的是转置然后否定矩阵。但是,这似乎并不实际。我听说这种方法在某些矩阵上不起作用,甚至有些矩阵是不可逆的。
我在寻找的不仅仅是一个“插入这个方程式”的答案,因为我实际上想知道当我倒置一个矩阵时发生了什么。这也不包括“只使用这个库”的答案。我将来可能会转向矩阵库,但现在我想自己创建它。
编辑:之前有人问,这是不是作业。这是一个个人项目。
编辑:显然有用于计算逆策略整个列表矩阵这里:http://en.wikipedia.org/wiki/Invertible_matrix
你是不是想打破它回落到缩放,旋转,平移组件?我不认为有这样一个数学上完美的方法,但有技术拉出“合理”的组件 – nielsbot
不,据我了解,转换矩阵的逆矩阵是“反转”它的矩阵操作。所以如果我有一个矩阵是“平移(1,2,3),旋转(45度)”,将它应用到一个点将会应用这些操作,而应用它的逆会“撤消”或“反向”这些操作。 – jpfx1342