Skip to content

Latest commit

 

History

History
148 lines (110 loc) · 3.84 KB

games101-02.md

File metadata and controls

148 lines (110 loc) · 3.84 KB
title date abbrlink gitrep tags
GAMES101-02 Linear Algebra
2021/4/25 22:46:25
games101-02
games101-note
学习笔记
CG

{% mmedia "bilibili" "bvid:BV1X7411F744" "page=2" %}

Dependencies

  • Basic mathematics: Linear algebra, calculus, statistics
  • Basic physics: Optics, Mechanics
  • Misc: Signal processing, Numerical analysis
  • a bit of aesthetics

Vectors

Doc(scalar) Product

$$ \begin{split} \vec{a}\cdot\vec{b}&=||\vec a||||\vec b||cos\theta\\ cos\theta&=\hat a\cdot\hat b\\ \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 \end{split} $$

  • Find angle between two vectors (e.g. cosine of angle between light source and surface)
  • Finding projection of one vector on another

20220524001330

$k$ Measure how close two directions are

$$ \begin{split} \vec{a}\cdot\vec{b}&=||\vec b_\perp||||\vec a|| \\ k&=\parallel\hat b_\perp \parallel=\parallel\hat b \parallel cos\theta\\ \hat b_\perp&=k \hat a \end{split} $$

20220524003758

Decompose a vector $\hat b=(\hat b-\hat b_\perp)+\hat b_\perp$

20220524004043

Determine forward/backward(k>0 or k<0>)

Cross Product

  • Cross product is orthogonal to two initial vectors
  • Direction determined by right-hand rule
  • Useful in constructing coordinate systems

20220524004151

$$ \vec{a} \times \vec{b}=\left(\begin{array}{c} y_{a} z_{b}-y_{b} z_{a} \\ z_{a} x_{b}-x_{a} z_{b} \\ x_{a} y_{b}-y_{a} x_{b} \end{array}\right) $$

20220524005827

Determine left / right

20220524005959

Determine inside / outside

Orthonormal Bases / Coordinate Frames

  • Important for representing points, positions, locations
  • Often, many sets of coordinate systems
    • Global, local, world, model, parts of model (head,hands,...)
  • Critical issue is transforming between these systems/bases

Any set of 3 vectors (in 3D) that

$$ \begin{gathered} |\vec{u}|=|\vec{v}|=|\vec{w}|=1 \\ \vec{u} \cdot \vec{v}=\vec{v} \cdot \vec{w}=\vec{u} \cdot \vec{w}=0 \\ \vec{w}=\vec{u} \times \vec{v} \quad \text { (right-handed) } \\ \vec{p}=(\vec{p} \cdot \vec{u}) \vec{u}+(\vec{p} \cdot \vec{v}) \vec{v}+(\vec{p} \cdot \vec{w}) \vec{w} \end{gathered} $$

Matrices

Array of numbers (m × n = m rows, n columns)

Addition and multiplication by a scalar are trivial: element by element

Matrix-Matrix Multiplication

(M x N) (N x P) = (M x P)

Element (i, j) in the product is the dot product of row i from A and column j from B

$$ \left(\begin{array}{ll}1 & 3 \ 5 & 2 \ 0 & 4\end{array}\right) \left(\begin{array}{llll}3 & 6 & 9 & 4 \ 2 & 7 & 8 & 3\end{array}\right)= \left(\begin{array}{cccc}9 & ? & 33 & 13 \ 19 & 44 & 61 & 26 \ 8 & 28 & 32 & ?\end{array}\right) $$

Matrix-Vector Multiplication

  • Treat vector as a column matrix (m×1)
  • Key for transforming points

Vector multiplication

$$ \begin{aligned} \vec{a} \cdot \vec{b}&=\vec{a}^{T} \vec{b} \\ =&\begin{bmatrix}x_{a} & y_{a} & z_{a}\end{bmatrix} \begin{bmatrix}x_{b} \ y_{b} \ z_{b}\end{bmatrix} \\ =&\left(x_{a} x_{b}+y_{a} y_{b}+z_{a} z_{b}\right) \end{aligned} $$

$$ \vec{a} \times \vec{b}=A^{*} b= \left(\begin{array}{ccc} 0 & -z_{a} & y_{a} \\ z_{a} & 0 & -x_{a} \\ -y_{a} & x_{a} & 0 \end{array}\right) \left(\begin{array}{l} x_{b} \\ y_{b} \\ z_{b} \end{array}\right) \\ A:the\quad dual\quad matrix\quad of \quad vector\quad a $$