US2S1L1——矩阵的基本概念

矩阵

矩阵(Matrix)是线性代数中的一个核心概念和重要工具
通过矩阵,我们可以方便的进行向量的相关计算
也可以更好的理解和解决线性代数中的各种问题

简而言之:矩阵是一种用来表示和处理数据的数学工具,它可以帮助我们有效的管理和计算大量的数据

矩阵的数学表示

矩阵(Matrix)可以通过 方括号内的数值表格来表示,比如:

[461][132][132567][234345783]\begin{bmatrix} 4 & 6 & 1 \end{bmatrix} \quad \begin{bmatrix} 1 \\ 3 \\ 2 \\ \end{bmatrix} \quad \begin{bmatrix} 1 & 3 & 2 \\ 5 & 6 & 7 \\ \end{bmatrix} \quad \begin{bmatrix} 2 & 3 & 4 \\ 3 & 4 & 5 \\ 7 & 8 & 3 \\ \end{bmatrix}

矩阵是由 m×nm \times nmmnn 大于0)个标量(只有大小,没有方向的量,可以理解为单个数值)组成的,可以通过方括号内的数值表格来表示

Matrix=[M11M1nMm1Mmn]Matrix = \begin{bmatrix} M_{11} & \cdots & M_{1n} \\ \vdots & \ddots & \vdots \\ M_{m1} & \cdots & M_{mn} \\ \end{bmatrix}

矩阵在程序中的表示

根据矩阵的结构是由 m×nm \times nmmnn 大于0)个标量组成

Matrix=[M11M1nMm1Mmn]Matrix = \begin{bmatrix} M_{11} & \cdots & M_{1n} \\ \vdots & \ddots & \vdots \\ M_{m1} & \cdots & M_{mn} \\ \end{bmatrix}

那么在程序中,我们用于存储矩阵结构的容器类型有很多选择,最常见的为:

  1. 数组(一维、二维都可以)

    1
    2
    int[,] array = new int[,] { { 1, 2, 3 },
    { 4, 5, 6 }, };
  2. 嵌套列表(两个List​嵌套)

    1
    2
    3
    4
    5
    6
    7
    List<List<int>> list = new()
    {
    { 1, 2, 3, 4, },
    { 5, 6, 7, 8, },
    { 9, 10, 11, 12, },
    { 13, 14, 15, 16, },
    }
  3. 开发工具提供的类或结构体(Unity中的Matrix4x4​、Matrix3x3​结构体)

为什么要学习矩阵

我们刚才学习的概念知识,知道了矩阵是线性代数中的核心工具,它可以用来进行向量相关的计算。
我们在进行Shader开发时,进行的很多数学计算需要利用矩阵来完成

比如:坐标系转换、投影计算、光照计算、纹理映射等等

简而言之:学习矩阵的目的,就是为了能在Shader开发中利用其进行相关数学计算