我正在用 Java 开发一个 OpenGL 项目,它已经到了我想在我自己的代码中创建转换矩阵的地步,所以我可以使用它们来进行世界到屏幕的点转换,反之亦然. 我创建了一个支持转换的 Matrix 类,这一切都很好。但是,我实际上很难弄清楚如何创建逆变换。
所以我的问题是:
- 给定一个任意仿射 (4x4) 变换矩阵,如何创建逆变换矩阵?有些矩阵是不可逆的吗?反转变换矩阵有哪些限制和注意事项?
从我的研究中,我听到了各种这样做的方法,最简单的方法是转置然后否定矩阵。但是,这似乎并没有真正起作用。我听说这种方法不适用于某些矩阵,甚至某些矩阵是不可逆的。
我正在寻找的不仅仅是“插入这个方程”的答案,因为我实际上想了解当我反转矩阵时发生了什么。这也排除了“只使用这个库”的答案。我将来可能会搬到矩阵库,但现在我想自己创建它。
编辑:在任何人问之前,这不是家庭作业。这是一个个人项目。
编辑:显然这里有计算逆矩阵的完整策略列表:http ://en.wikipedia.org/wiki/Invertible_matrix