[GAMES101]圖形學入門筆記

colopen發表於2024-06-07

線性代數基礎知識

此處只補充部份線代內容。

向量點乘

公式:\(\vec{a} \cdot \vec{b} = ||\vec{a}|| ||\vec{b}|| \cos \theta\)​​

同時也可以獲得兩個向量的餘弦角:\(\cos\theta = \dfrac{\vec{a}\cdot \vec{b}}{||\vec{a}|| ||\vec{b}||}\)

如果是單位向量的話,模長為1,於是有:\(\cos\theta = \vec{a}\cdot \vec{b}\)

笛卡爾座標系下的點乘為逐點相乘後相加:

In 2d Cartesian Coordinates:

\[\vec{a} \cdot \vec{b} = \begin{pmatrix} x_a \\ y_a \end{pmatrix} \cdot \begin{pmatrix} x_b \\ y_b \end{pmatrix} = x_a x_b + y_a y_b \]

In 3d Cartesian Coordinates:

\[\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_a x_b + y_a y_b + z_az_b \]

用點乘獲得向量投影

  • \(\vec{b}_{\bot}\)表示向量\(\vec{b}\)在向量向量\(\vec{a}\)上的投影
  • \(\vec{b}_{\bot}\)方向一定和\(\vec{a}\)的單位向量\(\hat{a}\)同向或反向:\(\vec{b}_{\bot} = k\hat{a}\)
  • \(k\)具體值如下:

\[k = ||\vec{b}_{\bot}|| = ||\vec{b}|| \cos \theta \]

點乘的一些應用:

  1. 測量兩個向量的方向差

    用點乘公式獲得餘弦角。

  2. 分解向量:

    利用投影將向量\(\vec{b}\)分解到向量\(\vec{a}\)的方向上,獲得\(\vec{b}_\bot\),然後讓\(\vec{b}\)減去該投影向量\(\vec{b}_\bot\)獲得剩餘向量\(\vec{b} - \vec{b}_\bot\),獲得了\(\vec{b}\)的兩組正交向量\(\vec{b}_\bot\)\(\vec{b} - \vec{b}_\bot\)

  3. 判斷兩個向量是否是前向/反向:

    點乘的結果是正數,根據公式可知餘弦角小於90度,表示兩個向量都是前向的;相反如果結果是負數,說明餘弦角大於90度,兩個向量是反向的。

相關文章