计算机图形学-数学笔记-矩阵

矩阵

Posted by ly on April 1, 2019

矩阵

矩阵概念

矩阵形式是一个数字表,以行和列的形式呈现:

矩阵的行数m和列数n可以不相同,m行n列矩阵记为矩阵 $$A_{n \times m} 。 java-javascript

零矩阵和单位矩阵

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。
旋转时还存在两种坐标系可以选择: java-javascript Unity文档中说的选择顺序指的是在第一种情况下的顺序。