-
矩阵是有几行几列的数据的集合,Xmn 表示 矩阵有m 行 n 列个数字
-
方阵是矩阵的特殊,是指行数和列数相等的矩阵
-
对角矩阵是从左上角到右下角的一条对角线(主对角线)有非零元素其他地方都是零元素的矩阵
-
单位矩阵是从左上角到右下角的一条对角线(主对角线)都是1 其他地方都是0的矩阵
-
Xn1矩阵可以看为列向量,因为它有多行一列,看起来是一列数字,X1n矩阵可以看为行向量,因为它有一行多列,看起来是一行数字
向量的转置
矩阵的转置:就是把原矩阵第n行的元素变成转置矩阵的第n列的元素,或者说把原矩阵第n列的元素变成转置矩阵的第n行的元素。看下图
可以想象:
行向量转置是列向量,列向量转置是行向量
对角矩阵很单位矩阵的转置矩阵都是它本身 -
矩阵与数字的乘法等于数字乘以矩阵里面的每个元素
-
矩阵与矩阵的相乘:第一个乘数的矩阵的列数和第二个乘数矩阵的行数要相等,矩阵才能进行,结果矩阵的行数的行数等于第一个乘数矩阵的行数,列数等于第二个乘数矩阵的列数。公式表达就是,Xmn * Y nc = Zmc。
相乘后,每个结果矩阵的元素值为:
可以通俗的理解为
结果矩阵的第n行n列的元素的值是第一个相乘矩阵的第n行的每个元素从上到下与第二个相乘矩阵的第n列的每个元素从左到右挨个相乘后 相加的值
实例演示:
矩阵乘法的规则:
乘法结合律: (AB)C=A(BC). [3]
乘法左分配律:(A+B)C=AC+BC [3]
乘法右分配律:C(A+B)=CA+CB [3]
对数乘的结合性k(AB)=(kA)B=A(kB).
转置 (AB)T=BTAT.
单位AN = NA = A 这里把单位矩阵用字母N表示
AB ≠ BAT
矩阵乘法一般不满足交换律。
实际工作中的shader计算中 使用比较多的是三维向量和三维矩阵的运算和二维向量和二维矩阵的运算,三维行向量是左乘三维矩阵(即三维行向量放在乘号的左边)才有意义,最终得到的结果也是一个三维行向量,而三维列向量是右乘三维矩阵才有意义,最终得到的结果也是一个三维列向量,上述的过程实际上是unity里面对一个向量进行坐标系转换的内部过程。元素相同的行向量和列向量和同一个矩阵相乘的结果是完全不一样,不能够通过转置等进行转换的。DX环境中使用比较多的是行向量,OpenGL里面使用比较多的是列向量,unity3D世界里面的位置等的坐标系转换也是通过向量与矩阵相乘等计算得到的