BZ易风

导航

 

Shader着色器

面向GPU编程

矩阵

概念

以行列形式组织起来的矩形的数字块

维度和记法

n行m列矩阵,简称n x m矩阵

元素的记法:假设矩阵M,M12为第1行第2列的元素

 

 

 

方阵

行数与列数相同的矩阵

2x2, 3x3, 4x4的矩阵

 

 

 

对角线元素

仅存在方阵中

方阵中行号与列号相同的元素就是对角线元素,其余都是非对角线元素

 

 

 

对角矩阵

方阵中,非对角线元素都为0的矩阵就是对角矩阵

单位矩阵

方阵中,对角线元素都为1,非对角线元素都为0的矩阵就是单位矩阵

 

 

 

如果一个矩阵是单位矩阵,那么它一定是对角矩阵

如果一个矩阵是对角矩阵,那么它可能是单位矩阵

矩阵和向量

向量记法

行向量:x, y, z

列向量:x,

    y,
    z

矩阵和向量的关系

行向量

一行三列的矩阵

 

 

 

列向量

三行一列的矩阵

 

 

 

转置矩阵

对于给定矩阵M,一定存在一个转置矩阵MT

将行变为列,列变为行

例如:2x3的矩阵,转置矩阵为3x2

 

 

矩阵运算

矩阵与标量的乘法

矩阵的每一个元素与标量相乘,不会改变矩阵的维度

矩阵 * 标量 = 矩阵

 

 

矩阵与矩阵的乘法

并不是所有的矩阵都能做乘法运算

M * N如果可以做乘法运算,那么必须满足M矩阵的列数与N矩阵的行数保持一致,否则M不能与N做乘法运算

矩阵 * 矩阵 = 矩阵

如果一个矩阵M(2 x 3),与矩阵N(3 x 4),那么M * N(2 x 4)

矩阵的乘法不满足乘法的交换律(交换律:A*B = B*A),M * N != N * M

公式

 

 

图解

 

 

矩阵与向量的乘法

向量与矩阵的乘法与矩阵与矩阵的乘法公式相同

行向量(1 x 3)需放在乘法的左侧与矩阵(3 x 3)进行运算,结果还是一个行向量(1 x 3):左乘

列向量(3 x 1)需放在乘法的右侧与矩阵(3 x 3)进行运算,结果还是一个列向量(3 x 1):右乘

向量与矩阵乘法的几何意义

假设向量a与矩阵M相乘得到的结果是向量b,aM=b。

如果矩阵来表示某种变换的话,那么就可以说向量a通过矩阵M表示的变换,变换后得到向量b

 

矩阵的几何意义

描述变换的(例如:旋转,缩放,平移,投影)

变换

线性变换

变换前是直线,变换后依旧是直线,变换前是原点,变换后依旧是原点的变换

旋转,缩放,投影,切变,镜像

平移不是线性变换

线性变换使用 3x3的矩阵就能描述3维空间的下的线性变换

仿射变换

线性变换 + 平移

对于平移来说,必须使用4x4的矩阵才能描述3维空间下的平移

矩阵的行列式

只有方阵才有行列式

行列式是一个标量,并不是矩阵

对于给定的矩阵M,它的行列式记为:|M| 或 detM

2阶行列式

 

 

3阶行列式

 

 

代数余子式

代数余子式是标量,并且一个矩阵代数余子式有多个,如果矩阵为 m行n列,那么代数余子式有 m*n个

记作: Cij

公式

 

 

 

 

代数余子式可以组成代数余子式矩阵

 

 

标准伴随矩阵(adjM)

是代数余子式矩阵的转置矩阵

 

 

 

 

逆矩阵(矩阵的逆)

记作:M-1

逆矩阵 = 标准伴随矩阵 / 矩阵的行列式

 

 

 注意:并不是所有的矩阵都有逆矩阵,当矩阵的行列式为0时,该矩阵没有逆矩阵

计算步骤

1、计算矩阵的行列式detM,判断矩阵是否可逆

2、计算矩阵的代数余子式矩阵

3、通过代数余子式矩阵计算标准伴随矩阵adjM

4、求逆矩阵, adjM / detM

 

 

 

几何意义

A向量经过矩阵M的变换得到了向量B,向量B经过M矩阵的逆矩阵变换得到了向量A,那么矩阵M与矩阵M的逆矩阵描述的变换是相反的

对于矩阵M实现的变换,𝑀−1可以实现相反 的变换

假如:矩阵M可以将向量缩放2倍,那么矩阵M的逆矩阵可以将向量缩放0.5倍

旋转矩阵

绕X轴旋转θ度

行向量左乘矩阵

 

 

 列向量右乘矩阵

 

 

 例如:

 

 

绕Y轴旋转θ度

行向量左乘矩阵

 

 

 

列向量右乘矩阵

 

 

绕Z轴旋转θ度

行向量左乘矩阵

 

 

 列向量右乘矩阵

 

 

缩放矩阵

沿坐标轴缩放的矩阵

 

 

缩放矩阵中,对角线元素描述了对每个轴的缩放,注意:缩放轴需要指定,缩放系数为1时,表示没有缩放

镜像矩阵

镜像简单理解就是左右翻转,上下翻转等

以yz组成的平面进行镜像

 

 

以xz组成的平面进行镜像

 

 

以xy组成的平面进行镜像

 

投影矩阵

所有的点都被拉平至垂直的轴或平面上, 这种投影方式叫做正交投影

投影是需要在一个平面上完成的,表示要 投影到哪个平面,所以我们计算都是根据 平面进行投影

3D变2D的过程就是投影

公式

 

齐次坐标

将3位向量(x,y,z)变为4维,增加一个w分量,(x, y, z, w)
使用4维向量来表示3维空间下的坐标点或方向向量

当w = 1时,(x, y, z)表示坐标点

当w = 0时,(x, y, z)表示方向向量

平移矩阵

对于向量平移是没有意义的,只有对坐标点平移才有意义

描述3维空间下的坐标点的平移需要使用4x4矩阵

3维向量在于平移矩阵做运算时,要使用其 齐次坐标来进行运算

推导平移公式

 

 

cs代码实现自定义平面网格

 

posted on 2021-03-22 17:32  BZ易风  阅读(55)  评论(0编辑  收藏  举报