第1讲(上):3D数学基础(上)
说明:本教程基于B站图形学大佬 发财学长 制作的 C++从零打造渲染器 系列视频。写这篇文章的目的主要是作个人学习笔记,如果这份笔记能帮到他人,本人不胜荣幸
多数内容在 初高中数学 高等数学 线性代数 课程已经介绍很详细了,这里不过多解释。本文章主要讨论这些课程未覆盖到,与图形学强相关的知识点
视频链接:【C++从零打造渲染器】第1讲(上集):3D数学基础(线性代数、向量、行列式、旋转矩阵、缩放矩阵)
视频链接:【C++从零打造渲染器】第1讲(下集):3D数学基础(平移变换、坐标系间的转换、世界坐标系、世界变换矩阵)
坐标系
二维坐标系
三维坐标系:左手系 右手系
极坐标系
球面坐标系
向量
向量矩阵形式:行向量 列向量(常用)
运算:加,减,数乘,取模,单位化,点乘,叉乘
向量混合积=向量构成平行六面体体积=向量构成行列式
行列式
克拉默法则
假设有一个包含 \(n\) 个未知数、\(n\) 个方程的线性方程组:
将其写成矩阵形式 \(A\mathbf{x} = \mathbf{b}\)。
第 \(j\) 个未知数 \(x_j\) 的值为:
- \(|A_j|\):将系数矩阵 \(A\) 的第 \(j\) 列替换为常数向量 \(\mathbf{b}\) 后,得到的新矩阵的行列式。
几何变换
-
任何一个矩阵变换都可以写成矩阵的形式
-
几何变换的逆,就是矩阵的逆
缩放
例1:把下面的图形放大\(5\)倍

例2:沿着\(x\)轴放大\(3\)倍,沿\(y\)轴缩小\(\frac{1}{3}\)

变换矩阵:\(\begin{bmatrix} s_x & 0 \\ 0 & s_y \end{bmatrix}\) 逆变换:\(\begin{bmatrix} \frac{1}{s_x} & 0 \\ 0 & \frac{1}{s_y} \end{bmatrix}\)
旋转
例1:在二维平面中,把P点旋转\(\theta\)度

变换矩阵:\(\begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix}\)逆变换:\(\begin{bmatrix} \cos\theta & sin\theta \\ -\sin\theta & \cos\theta \end{bmatrix}\)
例2:在三维空间中,把P点绕Z轴旋转\(\theta\)度

绕z轴旋转\(\begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}\)
绕x轴旋转\(\begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta \\ 0 & \sin\theta & \cos\theta \end{bmatrix}\)
绕y轴旋转\(\begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix}\)
旋转方向遵循右手螺旋法则
例3:把P点绕X轴旋转\(\alpha\)度,再绕Y轴旋转\(\beta\)度,再绕X轴旋转\(\gamma\)度
其实就是左乘三个旋转矩阵
变换矩阵:\(\begin{bmatrix} \cos\gamma & -\sin\gamma & 0 \\ \sin\gamma & \cos\gamma & 0 \\ 0 & 0 & 1 \end{bmatrix}\begin{bmatrix} \cos\beta & 0 & \sin\beta \\ 0 & 1 & 0 \\ -\sin\beta & 0 & \cos\beta \end{bmatrix}\begin{bmatrix} \cos\alpha & -\sin\alpha & 0 \\ \sin\alpha & \cos\alpha & 0 \\ 0 & 0 & 1 \end{bmatrix}\)
\(\alpha,\beta,\gamma\)合称为欧拉角
欧拉角既可以表示变换,也可以表示朝向
朝向和变换本质是一回事的,朝向的意思就是对图形原始朝向做了什么变换

本教程基于B站图形学大佬 发财学长 制作的 C++从零打造渲染器 系列视频。写这篇文章的目的主要是作个人学习笔记,如果这份笔记能帮到他人,本人不胜荣幸