矩阵求逆计算的实现
学习计算机图形学,那么就应该了解计算机图形学的一些基础知识,比如说向量、矩阵、欧拉角以及四元数。其中矩阵尤其是4×4的矩阵在其中是比较重要的一部分了。因为它包含的信息多,一个4×4的矩阵可以表示平移(translation)、旋转(rotation)、缩放(scaling)以及错切(shearing)以及它们组合后的变换(transform)。其中平移、旋转是刚体转换、在三维程序中较常使用,而缩放以及错切由于改变了三维模型的形状,在实际开发中较少使用。为了表示三维图形的逆变换,引入了逆矩阵的概念。逆矩阵使得一些效果比如公告板效果的实现成为了可能。
在上大学本科的时候,我们了解到了求矩阵的逆的方法主要有两种,第一是通过计算让其成为倒三角矩阵,然后计算其逆矩阵;另外一种方法是将矩阵和单位矩阵从左至右拼接起来,通过运算让单位矩阵移至左边,那么该矩阵的逆就到了右边了。矩阵的逆也有可能不存在,因为它的行列式值有可能为0,这种情况是无法求出矩阵的逆的。
实际开发中,我们采用广泛使用的矩阵求逆算法:高斯 - 约旦法。有关高斯 - 约旦法的原理我也不甚了解,但是介绍高斯 - 约旦法的代码还是很多的,网上一搜就有一大堆。如果大家感兴趣这种算法的话,那么可以去到维基百科以及它提到的文献寻个究竟。
这里我也给出自己对于这种方法的实现。这里将代码贴出来,以便日后进行查阅,同时也能够方便需要同行们。