零基础学图形学(10) 几何知识——矩阵操作

来源:互联网 发布:centos安装配置samba 编辑:程序博客网 时间:2024/06/10 01:48

(1)转置(transpose)

矩阵M的转置是另外一个矩阵,我们写成下面这种样式:MT(右上标T),我们可以使用不同的方式描述矩阵的转置。它可以描述为从主对角线(diagonal)左右对换,上下对换获取转置矩阵。M的行写成MT的列,M的列写成MT的行。可以使用下面的代码计算矩阵:

    Matrix44 transpose() const {        Matrix44 transpMat;        for (uint8_t i = 0; i < 4; ++i) {            for (uint8_t j = 0; j < 4; ++j) {                transpMat[i][j] = m[j][i];            }        }        return transpMat;    }

交换矩阵的行和列,因为这个惭怍不能在一个矩阵中完成,我们需要新创建一个矩阵,然后通过函数返回。当3D程序中的行顺序矩阵转为列顺序矩阵时矩阵的转置是有用的。

(2)倒置(Inverse)

点A和矩阵M相乘得到点B,点B和点A的倒置相乘得到点A.在数学上,矩阵的倒置通过写成M-1(-1是上标)的形式。很显然我们得到

M * M-1 = I

这里的I是相似矩阵,矩阵和它的倒置矩阵相乘得到相似矩阵。

我们已经在矩阵如何工作的章节已经提到,正交矩阵可以通过计算他的转置矩阵轻易地获取他的倒置矩阵。正交矩阵是一个方形矩阵,它的行和列是正交的单位向量,这是个很重要的特性,我们会在法向量平移中用到。

矩阵的倒置在3D中有很重要的地位。我们知道我们可以使用向量和矩阵的乘法将一个点或者向量进行变换。但是有时候也需要我们将点或者向量移动到原来的地方。它经常是需要的,比如射线的方向和原本物体的空间测试光纤和物体相交。如果物体空间和这个光线有相交的地方,需要把它们转换到世界坐标系中。

矩阵的倒置会在CG数学和物理中讲到,如何进行一个矩阵的倒置(这个会在老版本的这个网站中提供)。开发一个基本的渲染器没有使用矩阵和它们的倒置会很受限制的,因此我们提供了一些代码教你怎么做。你可以使用这些代码不用担心它们是怎样工作的,如果你感觉没有准备好,你可以其他的时间阅读这些比较超前的内容。

(3)矩阵行列式

这部分以后会写。


阅读全文
0 0
原创粉丝点击