矩阵
矩阵概念
矩阵形式是一个数字表,以行和列的形式呈现:
矩阵的行数m和列数n可以不相同,m行n列矩阵记为矩阵 $$A_{n \times m} 。
零矩阵和单位矩阵
mxn矩阵,如果所有元素都为0,则为零矩阵。
对于一个n阶方阵,如果主对角线元素全为1,其余元素都为0则称为n阶单位阵。
矩阵转置
转置操作即是将矩阵的行和列互换。
矩阵运算
矩阵加减法
两个矩阵A和B要能执行加减法,必须是行和列数目相等的。
标量和矩阵乘法
用一个数k乘以矩阵A,结果为矩阵A中每个元素乘以数k。例如:
矩阵和矩阵乘法
两个矩阵和要执行乘法操作,需要满足:左边矩阵的列数和右边矩阵的行数相等,并且结果矩阵为。
其中C中第i行第j列的元素为:
例如:
注意矩阵乘法不满足交换律(当然存在特殊情况下相等)
矩阵和向量相乘
矩阵和向量相乘是矩阵和矩阵相乘的特例,给定矩阵A和列向量,相乘过程如下所示:
逆矩阵
对于n阶方阵A,如果存在一个n阶方阵B使得:
则称是的逆矩阵,这时就说矩阵是可逆矩阵,或者说矩阵是非奇异矩阵。单位矩阵是主对角线上元素为1,其余元素都为0的n阶方阵。例如3x3的单位矩阵为
注意 只有n阶方阵才有逆矩阵的概念,对于一般的矩阵不存在这样的矩阵满足14式。
逆矩阵的应用意义
在3D图形处理中,用一个变换矩阵乘以向量,代表了对原始图形进行了某种变换,例如缩小,旋转等,逆矩阵标识这个操作的逆操作,也就是能够撤销这一操作。
注意转换矩阵应用顺序,当用矩阵A,B,C转换向量时,如果用行向量记法,则矩阵按转换顺序从左到右列出,表达式为;如果采用列向量记法,则转换矩阵应该放在左边,并且从右往左发生,对应的转换记为
正交矩阵
对于方阵,当且仅当与其转置矩阵的成绩等于单位矩阵时,称其为正交矩阵。
正交矩阵的一大优势在于,计算逆矩阵时,只需要对原矩阵转置即可,从而减少了计算量。3D图形中的旋转和镜像变换都是正交的。
正交矩阵举例
例如下面的矩阵表示物体绕x轴旋转角度
可以通过旋转矩阵本身的特性证明。对于旋转而言,绕x轴旋转角度的逆操作等于绕x轴旋转度,因此:
由此可得为正交矩阵
计算机图形学中的矩阵
矩阵的几何功能
1.矩阵是一种线性变换
2.矩阵是一种映射,映射可以是一对一,也可以是一对多
3.矩阵是一种空间变换,每一种矩阵都是有本身的几何意义,而不是单纯的数字组合
线性变换
线性变换指的是可以保留矢量加和变量乘的变换。用数学公司来表示:
缩放就是一种线性变换
如果要对三维的矢量进行变换,那么可以用3x3的矩阵表示所有的线性变换,例如缩放变换:
但是平移变换不符合线性变换
所以为了支持平移变换,使用一个4x4的矩阵来表示3维空间的变换,因此我们需要把矢量扩展到四维空间下,就是所谓的齐次坐标系
矩阵变换的通式
其中矩阵用于便是旋转和缩放,用于表示平移。
平移变换
对点进行平移变换:
对方向矢量进行平移变换:
因为矢量只有方向,没有位置,所以矢量的第四维为0,平移变换不会对矢量造成影响。PS:平移矩阵不是一个正交矩阵。
缩放矩阵
旋转矩阵
绕x轴:
绕y轴:
绕z轴:
旋转矩阵是正交矩阵
复合变换
我们可以吧平移、旋转和缩放组合起来,形成一个复杂的变换过程。
列坐标表示:
变换顺序为从右往左,即先缩放变换,再旋转变换,最后平移变换。
在大多数情况下,我们约定变换顺序是:先缩放,在旋转,最后平移。
为什么这么约定呢?假设先进行平移,在进行缩放,那之前的平移值也会被影响,从而导致效果和数值显示的不同。
我还需要注意小心旋转的变换顺序。在Unity中,旋转顺序是zxy。
旋转时还存在两种坐标系可以选择:
Unity文档中说的选择顺序指的是在第一种情况下的顺序。