1. 程式人生 > >GAMES101系列筆記一 圖形學概述與線性代數入門

GAMES101系列筆記一 圖形學概述與線性代數入門

## 概述+線性代數 ### 為什麼學習圖形學? #### Computer Graphics is AWESOME! 主要涉及內容: - 光柵化 - 曲線和網格 - 光線追蹤 - 動畫與模擬 Differences between CG and CV: ![](https://img2020.cnblogs.com/blog/1345067/202011/1345067-20201111204938739-399242230.png) ## 線性代數回顧 ### 向量(Vectors) - 方向和長度 模長:$||\vec{a}||$ - 沒有確定的起點 - 單位向量:模長為1 單位化向量: $\hat{a} = \vec{a}/||\vec{a}||$ - 向量求和: ![](https://img2020.cnblogs.com/blog/1345067/202011/1345067-20201111205047656-43366918.png) - 列向量,轉置,模長的計算方式 $\boldsymbol{A} = \begin{pmatrix}x \\ y\end{pmatrix} \quad \boldsymbol{A}^T = \begin{pmatrix}x&y\end{pmatrix} \quad ||\boldsymbol{A}|| = \sqrt{x^2+y^2}$ - 點乘(Dot/scalar Product) ![](https://img2020.cnblogs.com/blog/1345067/202011/1345067-20201111205100386-1234894655.png) - 點乘定義: $\vec{a} \cdot \vec{b} = ||\vec{a}||\,||\vec{b}||cos\theta$ $cos\theta = \frac{\vec{a}\cdot\vec{b}}{||\vec{a}\||\,||\vec{b}||}$ - For unit vectors: $cos\theta = \hat{a}\cdot\hat{b}$ - 交換律、結合律、數乘 直角座標系下,計算更為方便: - 2D: $\vec{a}\cdot\vec{b} = \begin{pmatrix}x_a \\y_a\end{pmatrix}\cdot\begin{pmatrix}x_b \\y_b\end{pmatrix} = x_ax_b+y_ay_b.$ - 3D: $\vec{a}\cdot\vec{b} = \begin{pmatrix}x_a \\y_a\\z_a\end{pmatrix}\cdot\begin{pmatrix}x_b \\y_b\\z_b\end{pmatrix} = x_ax_b+y_ay_b+z_az_b.$ - 投影: ![](https://img2020.cnblogs.com/blog/1345067/202011/1345067-20201111205120441-1838815831.png) $\vec{b}_\perp:\vec{b}$ 在 $\vec{a}$ 上的投影; $\vec{b}_\perp = k\hat{a};$ $k = ||\vec{b}_\perp|| = ||\vec{b}||cos\theta$ - 點乘可以告訴我們前和後的關係 ![](https://img2020.cnblogs.com/blog/1345067/202011/1345067-20201111205131534-1881665857.png) - 叉乘(Cross\Vector product) - 兩個向量相乘,得到一個與這兩個向量都相等的向量; $\vec{a}\times\vec{b} = -\vec{b}\times\vec{a}$ $\vec{a}\times\vec{a} = \vec{0}$ $||\vec{a}\times\vec{b}|| = ||\vec{a}||\,||\vec{b}||sin\phi$ 方向由右手螺旋定則確定 ![](https://img2020.cnblogs.com/blog/1345067/202011/1345067-20201111205154104-562554702.png) - 笛卡爾座標系下的計算方法: $\vec{a}\times\vec{b} = \begin{pmatrix}y_az_b-y_bz_a \\ z_ax_b - x_az_b \\ x_ay_b-y_ax_b\end{pmatrix} = A*b = \begin{pmatrix}0 & -z_a& y_a \\ z_a & 0 & -x_a \\ -y_a & x_a & 0\end{pmatrix}$ $A$ 為 $\vec{a}$ 的對偶矩陣。 - 叉乘在圖形學中的作用 判定左和右(一次叉乘),判斷內和外(三次叉乘) ![](https://img2020.cnblogs.com/blog/1345067/202011/1345067-20201111205220151-921049910.png) - 正交系 - 三個單位向量 $ ||\vec{u}|| = ||\vec{v}|| = ||\vec{w}|| = 1$ - 兩兩垂直 $\vec{u}\cdot\vec{v} = \vec{v}\cdot\vec{w} = \vec{u}\cdot\vec{w}$ - 右手系 $\vec{w} = \vec{u}\times\vec{v}$ - 任何一個向量可以由這三個向量表示 $\vec{p} = (\vec{p}\cdot\vec{u})\vec{u} + (\vec{p}\cdot\vec{v})\vec{v} + (\vec{p}\cdot\vec{w})\vec{w}$ 因為$\vec{u}\ \vec{v}\ \vec{w}$ 都是單位向量,所以可以用 $\vec{p}$ 在其上的投影乘以其本身來得到一個維度的分量。 - 矩陣(Matrices) - 矩陣乘矩陣 維度需滿足: $(M\times N)(N\times P) = (M\times P)$ (3 2)(2 4)= (3 4) ![](https://img2020.cnblogs.com/blog/1345067/202011/1345067-20201111205234281-181120491.png) - 不符合交換律。但符合結合律和分配律。 $(AB)C = A(BC)$ $A(B+C) = AB + AC$ $(A+B)C = AC + BC$ - 矩陣向量乘 按 $y$ 軸映象 $\begin{pmatrix}-1 & 0 \\ 0 & 1\end{pmatrix}\begin{pmatrix}x \\ y \end{pmatrix} = \begin{pmatrix}-x \\ y\end{pmatrix}$ - 矩陣的轉置 $(AB)^T = B^TA^T$ - 單位矩陣 $I_{3\times3} = \begin{pmatrix}1 & 0 & 0 \\ 0 & 1 & 0\\ 0 & 0 & 1\end{pmatrix}$ $AA^{-1} = A^{-1}A = I;\quad (AB)^{-1} = B^{-1}A^{-1}$ - 向量乘法的矩陣形式 $\vec{a}\cdot\vec{b} = \vec{a}^T\vec{b}$ $\vec{a}\times\vec{b} = \begin{pmatrix}y_az_b-y_bz_a \\ z_ax_b - x_az_b \\ x_ay_b-y_ax_b\end{pmatrix} = A^*b = \begin{pmatrix}0 & -z_a& y_a \\ z_a & 0 & -x_a \\ -y_a & x_a & 0\end{pm