本系列文章由birdlove1987编写,转载请注明出处。
文章链接:http://blog.csdn.net/zhurui_idea/article/details/24975031
矩阵是3D数学的重要基础,它主要用来描述两个坐标系统间的关系,通过定义一种运算而将一个坐标系中的向量转换到另一个坐标系中。
在线性代数中,矩阵就是一个以行和列形式组织的矩形数字块。向量是标量的数组,矩阵则是向量的数组。
矩阵的维度和记法
矩阵的维度被定义为它包含了多少行和多少列,一个 r * c 矩阵有 r 行、c 列。
矩阵的记法:
mij表示M的第i行第j列元素。矩阵的下标从1开始,所以第一行和第一列都用数字1。
方阵
行数和列数相同的矩阵称作方阵。
方阵的对角线元素就是方阵中行号和列号相同的元素。其他元素均为非对角线元素。简单的说方阵对角线元素就是方阵对角线上的元素。
如果所有非对角线元素都为0,那么称这种矩阵为对角矩阵。
单位矩阵是一种特殊的对角矩阵。n维单位矩阵记作In,是n*n矩阵,对角线元素为1,其他元素为0。
单位矩阵非常特殊,因为它是矩阵的乘法单位元。其基本性质是用任意一个矩阵乘以单位矩阵,都将得到原矩阵。所以在某种意义上,单位矩阵的作用就像1对于标量的作用。
向量与矩阵
矩阵的行数和列数可以是任意正整数,当然也包括1。向量也可以看做是一行或是一列的矩阵。
一个n维向量能被当作1*n 矩阵或 n*1矩阵。1*n 矩阵被称作行向量,n*1矩阵被称作列向量。
ps:混合使用向量和矩阵时,必须特别注意向量到底是行向量还是列向量。
矩阵的转置(当年学习线性代数的时候,很是觉得这个转置什么的没什么用处。。。)
一个 r*c矩阵 M。M的转置记作 ,是一个 c*r矩阵,它的列由M的行组成。形式上可理解为,沿着矩阵的对角线翻折。
对于向量来说,转置将使行向量变成列向量,使列向量成为行向量。
关于矩阵转置的引理:
(1)对于任意矩阵M,=M。从另一个方面来说,将一个矩阵转置后,再转置一次,便会对到原矩阵。
(2)对于任意对角矩阵D,都有=D,包括单位矩阵 I 也如此。
标量和矩阵的乘法
矩阵M能和标量k相乘,结果是一个和M维数相同的矩阵。
矩阵乘法
记 r*n矩阵 A 与 n*c 矩阵B 的积 r*c矩阵 AB为 C 。C的任意元素Cij等于A的第i行向量与B的第j列向量点乘的结果。
3*3矩阵乘法
ps:(1)任意矩阵M乘以方阵S,不管从哪边乘,都将得到与原矩阵大小相同的矩阵。如果S是单位矩阵,结果将是原矩阵M,即MI = IM = M。
(2)矩阵乘法不满足交换律,即AB≠BA。
(3)矩阵乘法满足交换律,即(AB)C=A(BC)。
-End-
参考文献:(1)《3D Math Primer for Graphics and Game Development》
(2)百度百科
原文地址:http://blog.csdn.net/zhurui_idea/article/details/24975031