真實感渲染:三角函數、向量和矩陣

大家好~本課程爲“真實感渲染”的線上課程,從0開始,介紹相關的圖形學算法和數學基礎,給出詳細的數學推導、僞代碼和實現代碼,最終帶領大家開發出基於物理的渲染器

線上課程資料:

本節課錄像回放

加QQ羣,獲得ppt等資料,與羣主交流討論:106047770

本系列文章爲線上課程的覆盤,每上完一節課就會同步發佈對應的文章

本課程系列文章可進入索引查看:
真實感渲染系列文章索引

爲什麼要學習本課

  • 如何在幾何上表示向量的加法?
  • 如何在代數上計算向量的加法?
  • 三角函數、向量、矩陣在圖形學中有哪些應用?

主問題:什麼是三角函數

  • 對直角三角形而言,下面的三角函數的值分別是多少?
    image

    • sinθ
    • cosθ
    • tanθ
    • cotθ
  • 對任意三角形而言呢?

  • 三角函數在圖形學中有哪些應用?

    • 已知三角函數的值後,可以計算出角度:\(\arcsin\frac{1}{2} = 30^o\)
    • 已知直角三角形的一邊和一個角度,可以計算另外一邊

主問題:什麼是向量

  • 用什麼符號表示向量?
    image
    答:使用\(\overrightarrow{a}\)或者粗體a表示;
    或者用起點和終點表示:\(\overrightarrow{AB} = B - A\)

  • 向量有什麼特性?
    答:具有方向和長度;
    沒有絕對的起點;

  • 如何用代數表示向量?
    答:
    image

image

  • 用什麼符號表示向量的長度?
    答:\(\Vert{\overrightarrow{a}}\Vert\)

  • 什麼是單位向量?
    答:長度爲1的向量

  • 如何計算一個向量的單位向量(向量正交化)?
    答:\(\widehat{a}=\frac{\overrightarrow{a}} {\Vert{\overrightarrow{a}}\Vert}\)

  • 如何應用單位向量?
    答:用來表示方向,如法線

  • 如何計算向量的加法?

    • 幾何上
      答:image

    • 代數上
      答:略

  • 向量的點積的定義是什麼?
    答:image

\[\overrightarrow{a} \cdot \overrightarrow{b} = {\Vert{\overrightarrow{a}}\Vert} {\Vert{\overrightarrow{b}}\Vert} cos\theta \]

  • 對於兩個單位向量,點積是多少?
    答:\(\widehat{a} \cdot \widehat{{b}} = cos\theta\)

  • 點積滿足什麼運算法則?
    答:image

  • 如何進行點積的代數運算?
    答:image

  • 點積在圖形學中有哪些應用?

    • 計算兩個向量的夾角
      答:通過“兩個單位向量的點積”,得到\(cos\theta\),然後就可以得到夾角。這可以應用於計算光源方向和表面法線的夾角
    • 計算一個向量到另一個向量的投影
      答:image
      image
    • 分解一個向量
      答:image
    • 決定向量的前/後關係

    答:image

    如上圖所示,如果兩個向量都在一個半圓內,則它們屬於“前”關係(如\(\overrightarrow{a},\overrightarrow{b}\));否則,則它們屬於“後”關係(如\(\overrightarrow{a},\overrightarrow{c}\)

    如果兩個向量點積大於0,則\(cos\theta>0\),所以\(\theta \in [0, \frac{\pi}{2})\),它們屬於“前”關係;否則,它們屬於“後”關係

  • 向量的叉積的定義是什麼?
    答:image
    image

  • 叉積滿足什麼運算法則?
    答:image

  • 如何進行叉積的代數運算?
    答:image

  • 叉積在圖形學中有哪些應用?

    • 構建座標系
      答:image
      右手座標系:
      image
      如上圖所示,通過兩個正交的單位向量的叉積來構建座標系第三維的向量
    • 決定向量的左/右關係
      答:image
      如上圖所示,假設\(\overrightarrow{a}, \overrightarrow{b}\)在xy平面,如果\(\overrightarrow{a} \times \overrightarrow{b} = +\overrightarrow{z}\),則\(\overrightarrow{b}在\overrightarrow{a}\)的左側;否則在右側
    • 判斷一個點是否在三角形內
      答:image
      分別判斷上圖的AB和AP、BC和BP、CA和CP,如果它們叉乘的結果同號,則點在三角形內。

結學

  • 什麼是向量?
  • 向量有什麼特性?
  • 點積在圖形學中有哪些應用?
  • 叉積在圖形學中有哪些應用?

主問題:什麼是矩陣

  • 在圖形學中,矩陣有哪些應用?
    答:用於座標變換,如位移、旋轉、縮放

  • 什麼是矩陣?
    答:可以看成是一個包含數字的數組
    image
    image

  • 如何進行矩陣與標量相乘的代數計算?
    答:矩陣的每個元素乘以該標量

  • “矩陣與矩陣”相乘有什麼約束?
    答:image

  • 如何進行矩陣與矩陣相乘的代數計算?
    答:image
    乘積中的第(i, j)個元素=第一個矩陣的第i行與第二個矩陣的第j列的點積

  • 矩陣與矩陣相乘滿足什麼運算法則?
    答:不滿足交換律;
    滿足結合律和分配律:
    image

  • “矩陣與向量”相乘有什麼約束?
    答:矩陣(mxn)乘以向量(nx1)

  • 如何進行矩陣與向量相乘的代數計算?
    image

  • “矩陣與向量相乘”在圖形學中有哪些應用?

    • 變換一個點
      答:如將一個點沿y軸鏡像變換:
      image
  • 什麼是矩陣轉置?
    答:image

  • 矩陣轉置滿足什麼運算法則?
    答:image

  • 什麼是單位矩陣?
    答:image

  • 什麼是逆矩陣?
    答:image

  • 如何用矩陣表示向量的點積?
    答:image

  • 如何用矩陣表示向量的叉積?
    image
    答:
    image

結學

  • 什麼是矩陣?
  • “矩陣與向量相乘”在圖形學中有哪些應用?

總結

  • 回答開始的問題?

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章