0%

02 - 线性代数回顾

1. 图形学的依赖学科

  • 基础数学
    • 线性代数,微积分,统计…
  • 基础物理
    • 光学,力学…
  • 其他
    • 信号处理,数值分析…
  • 以及一些审美

2. 向量

向量的定义,标准化,求和,坐标表示,求长度等知识
(图形学上默认以列向量表示)

2.1 点乘

2.1.1 定义和运算律

screenShot.png

ab=abcosθcosθ=abab\begin{aligned} \vec{a} \cdot \vec{b} &= \Vert{\vec{a}}\Vert \Vert{\vec{b}}\Vert \cos{\theta} \\[2ex] \cos{\theta} &= \cfrac{\vec{a} \cdot \vec{b}}{\Vert{\vec{a}}\Vert \Vert{\vec{b}}\Vert} \end{aligned}

  • 对于单位向量

cosθ=a^b^\cos{\theta} = \hat{a} \cdot \hat{b}

2.1.2 坐标的运算以及作用

找夹角和找投影

  • 2D

ab=(xaya)(xbyb)=xaxb+yayb\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

  • 3D

ab=(xayaza)(xbybzb)=xaxb+yayb+zazb\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_a z_b

2.1.3 点乘的作用

  • 两个向量之间的接近程度
  • 分解向量
  • 根据点乘结果正负判断前后

screenShot.png

  • b\vec{b}_\perpb\vec{b}a\vec{a} 上的投影
  • b\vec{b}_\perp 必须沿着 a\vec{a} (或者沿着 a^\hat{a}
  • 对应的模 kk
    • k=b=b^cosθk = \Vert{\vec{b}_\perp}\Vert = \Vert{\hat{b}}\Vert \cos{\theta}

screenShot.png

2.2 叉乘

  • 叉乘的定义和运算律
  • 右手定则判断叉乘方向
  • 这节课都是右手坐标系,OpenGL是左手坐标系

screenShot.png

2.2.1 叉乘的坐标计算

x×y=+zy×x=zy×z=+xz×y=xz×x=+yx×z=y\begin{aligned} \vec{x} \times \vec{y} &= + \vec{z} \\ \vec{y} \times \vec{x} &= - \vec{z} \\[1.25ex] \vec{y} \times \vec{z} &= + \vec{x} \\ \vec{z} \times \vec{y} &= - \vec{x} \\[1.25ex] \vec{z} \times \vec{x} &= + \vec{y} \\ \vec{x} \times \vec{z} &= - \vec{y} \\ \end{aligned}

2.2.2 叉乘的计算

a×b=b×aa×a=0a×(b+c)=a×b+a×ca×(kb)=k(a×b)\begin{aligned} \vec{a} \times \vec{b} &= - \vec{b} \times \vec{a} \\[1.25ex] \vec{a} \times \vec{a} &= \vec{0} \\[1.25ex] \vec{a} \times (\vec{b} + \vec{c}) &= \vec{a} \times \vec{b} + \vec{a} \times \vec{c}\\[1.25ex] \vec{a} \times (k\vec{b}) &= k(\vec{a} \times \vec{b}) \end{aligned}

  • 三维向量叉乘

a×b=(yazbybzazaxbxazbxaybyaxb)\vec{a} \times \vec{b} = \begin{pmatrix} 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{pmatrix}

  • 叉乘矩阵

a×b=Ab=(0zayaza0xayaxa0)(xbybzb)\vec{a} \times \vec{b} = A^*b = \begin{pmatrix} 0 & -z_a & y_a \\ z_a & 0 & -x_a \\ -y_a & x_a & 0 \end{pmatrix} \begin{pmatrix} x_b \\ y_b \\ z_b \end{pmatrix}

2.2.3 叉乘的作用

  • 判断左右:利用叉乘结果的正负
  • 判断内外:P点一直在三条边的左边/右边

screenShot.png

  • 图形学计算

screenShot.png

3. 矩阵

  • 矩阵的定义
  • 乘法
  • 运算律:结合律,分配律,没有交换律
  • 转置:行列互换, aija_{ij} 变成 ajia_{ji}
  • 逆:相乘为单位矩阵