US2S1——线性代数及坐标空间变换

线性代数

线性代数是数学的一个分支,它的研究对象是向量向量空间(或称线性空间),线性变换和有限维的线性方程组
向量空间是现代数学的一个重要课题;因而,线性代数被广泛地应用于抽象代数泛函分析中;
通过解析几何,线性代数得以被具体表示。线性代数的理论已被泛化为算子理论。
由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。

线性代数(数学分支学科)_百度百科 (baidu.com)

线性代数是数学的一个分支学科,它是一门研究向量和它们之间关系的数学学科
我们可以把向量想象成有大小和方向的箭头,线性代数主要研究如何使用这些箭头进行加减乘除运算,以及它们之间的变换规则

简而言之:线性代数是一门研究向量和变换的数学学科

强烈推荐配合学习以加深理解:【官方双语/合集】线性代数的本质 - 系列合集_哔哩哔哩_bilibili

本系列学习内容

  • 矩阵的基本概念

  • 矩阵乘法

  • 特殊矩阵(重要特殊矩阵:逆矩阵,正交矩阵,行矩阵和列矩阵)

  • 平移、缩放、旋转变换

    • 矩阵的几何意义(表示变换,包括缩放、旋转、平移)
    • 齐次坐标(为矩阵或向量加一维)
    • 平移矩阵(平移矩阵左乘点的齐次坐标可使点偏移)
    • 旋转矩阵(旋转矩阵左乘点或向量的齐次坐标可使点和向量旋转)
    • 缩放矩阵(缩放矩阵左乘点或向量的齐次坐标可使点位置缩放(模型大小缩放),改变向量模长,可能还会改变向量的方向)
    • 复合运算(先缩放、后旋转、再平移)
  • 坐标系变换

    • 坐标空间的变换 (模型空间 → 世界空间 → 观察空间 → 裁剪空间 → 屏幕空间)

    • 坐标空间的变换规则(坐标空间变换矩阵 的计算方法)

    • 模型空间变换 (模型空间 → 世界空间 的计算方法)(注意:模型空间是左手坐标系,z轴指向前)

    • 观察空间变换 (世界空间 → 观察空间 的计算方法) (注意:观察空间是右手坐标系,z轴指向后)

    • 裁剪空间变换 (观察空间 → 裁剪空间 的判断方法)(注意:裁剪空间是左手坐标系,z轴指向前)

      • 齐次裁剪空间(将观察空间内顶点坐标转换到齐次裁剪空间内,坐标超出(-1,-1,-1)~(1,1,1)范围的即为需要裁剪的顶点)
      • 视锥体的投影方式和相似三角形(为透视投影变换做铺垫)
      • 正交投影变换
      • 透视投影变换
      • 裁剪空间变换的意义
    • 屏幕空间变换(裁剪空间 → 屏幕空间 的判断方法)(注意:屏幕空间是左手坐标系,z轴指向前,也就是屏幕内)

学习线性代数的意义

我们在这一部分的学习中,主要学习了如何将模型的顶点数据利用相关数学知识变换到屏幕坐标中
变换主要有 四个步骤:模型空间 → 世界空间 → 观察空间 → 裁剪空间 → 屏幕空间
注意:这几个空间中,除了**观察空间中坐标是基于右手坐标系的,其他都是左手坐标系**

顶点着色器的最基本任务就是把顶点坐标从模型空间转换到裁剪空间中
片元着色器中可以得到片元在屏幕空间的像素位置

这一阶段的知识点,以后会在Shader开发中频繁使用
以后我们学习的对应空间变换的API,内部的实现原理就是我们学习的这些知识点

对于顶点以外的变换

我们经常提到空间的变换,不仅仅是针对顶点的,模型数据中还有切线、法线相关数据
关于它们是如何变换的,基本原理还是进行矩阵运算,但是其中法线数据的变换规则会有些许不同
我们会在之后需要进行法线变换时,再详细进行讲解。