GAMES101 Lecture 02 Review of Linear Algebra

Lecture 02 Review of Linear Algebra

图形学的依赖

基础数学

  • 线性代数
  • 微积分
  • 统计学

基础物理

  • 光学
  • 力学

杂项

  • 信号处理
  • 数值分析

一点美学

向量

(数学上称为向量,物理上称为矢量)

\(\vec{AB}\) = B - A

向量表示方向和长度

向量的大小\(\Vert\vec{a}\rVert\)

单位向量 \(\widehat{a} = \vec{a}/\Vert\vec{a}\rVert\),用于表示方向

向量求和

几何上

平行四边形法则、三角形法则

代数上

Cartesian Coordinates(笛卡尔坐标系)

坐标相加

在图形学中,默认向量为列向量

\[A =\begin{pmatrix} x\\ y\\ \end{pmatrix}\\ A^T=\begin{pmatrix} x,y\\ \end{pmatrix}\\ ||A|| = \sqrt{x^2+y^2} \]

点乘

在图形学中

  • 可以用向量算出这两个向量的夹角余弦,进而得到夹角

  • 将一个向量任意地进行垂直于平行的分解

  • 两个向量点乘结果可以得知它们的方向有多么接近

    结果越接近1方向越接近,越接近0越垂直,越接近-1越反向

  • 向量点乘的正负可以获知两个向量前与后的信息

    结果大于0同向

    结果等于0垂直

    结果小于0反向

向量的点乘最终结果是一个数

\[\vec{a}\cdot \vec{b} = \lVert\vec{a}\rVert \ \lVert\vec{b}\rVert \cos{\theta}\\ \cos{\theta} = {{\vec{a}\cdot \vec{b}}\over {\lVert\vec{a}\rVert \ \lVert\vec{b}\rVert}} \]

对于单位向量

\(cos\theta = \widehat{a}\cdot\widehat{b}\)

性质

\[\vec{a}\cdot\vec{b} = \vec{b}\cdot\vec{a}\\ \vec{a}\cdot(\vec{b}+\vec{c}) = \vec{a}\cdot\vec{b}+\vec{a}\cdot\vec{c}\\ (k\vec{a})\cdot\vec{b} = \vec{a}\cdot({k\vec{b}}) = k(\vec{a}\cdot\vec{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_a x_b + y_a y_b + z_a z_b \]

叉乘

  • 可用于建立三维空间的直角坐标系

  • 判定左和右 (如\(\vec{a}\times\vec{b}\)

    叉乘结果大于0,则b在a左侧,反之在右侧(左手坐标系)

  • 判断内和外(三角形光栅化的基础)

    假设有A、B、C三个点逆时针排列,

    \(若\vec{AB}\times\vec{AP}、\vec{BC}\times\vec{BP}和\vec{CA}\times\vec{CP}\\均判断出P在三边的同一侧(结果同号),\\说明P点在三角形内侧\\若结果为0,则自己觉得在内侧或外侧\)

     

向量叉乘的结果为向量,与两个原向量垂直,方向可应用右手螺旋定则,四指方向从a旋转到b,拇指方向为叉乘结果向量方向

\[a\times b = -b \times a\\ \lVert a\times b\rVert = \lVert a\rVert \lVert b\rVert sin\phi \]

性质

\[\vec{x}\times\vec{y}=+\vec{z}\\ \vec{y}\times\vec{x}=-\vec{z}\\ \vec{y}\times\vec{z}=+\vec{x}\\ \vec{z}\times\vec{y}=-\vec{x}\\ \vec{z}\times\vec{x}=+\vec{y}\\ \vec{x}\times\vec{z}=-\vec{y}\\ \\ \vec{a}\times\vec{b} = -\vec{b}\times\vec{a}\\ \vec{a}\times\vec{a} = 0\\ \vec{a}\times(\vec{b}+\vec{c})=\vec{a}\times\vec{b}+\vec{a}\times\vec{c}\\ \vec{a}\times(k\vec{b})=k(\vec{a}\times\vec{b})\\ \]

*若一个向量叉乘自己,得到的是长度为0的向量,而不是0

*若xy叉乘为z,则为右手坐标系,反之为左手坐标系

  • OpenGL为右手坐标系(Z轴向外)
  • DirextX为左手坐标系(Z轴向内)
  • Vulkan为右手坐标系(Y轴向下)
  • Metal为左手坐标系(Z轴向内)
  • Unity和Unreal为左手坐标系(同DX)

以矩阵的形式

\[\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}\\ \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}\\ \]

矩阵

矩阵乘矩阵

\[(M\times N)(N\times P) = (M\times P)\\ 左矩阵列数需等于右矩阵行数才可相乘\\ 计算为前行乘后列\\ 例: \begin{pmatrix} 1 & 3\\ 5 & 2\\ 0 & 4 \end{pmatrix} \begin{pmatrix} 3 & 6 & 9 & 4\\ 2 & 7 & 8 & 3 \end{pmatrix} = \begin{pmatrix} 9 & 29& 33 & 13\\ 19 & 44 & 61 & 26\\ 8 & 28 & 32 & 12 \end{pmatrix} \]

性质

  • 无交换律,\(AB != BA\)

  • 结合律和分配律

    (AB)C = A(BC)

    A(B+C) = Ab + AC

    (A+B)C = AC + BC

矩阵乘向量

将向量视为列矩阵\((m\times 1)\)

\[这里将(x,y)关于y轴对称\\ \begin{pmatrix} -1 & 0\\ 0 & 1 \end{pmatrix} \begin{pmatrix} x\\ y \end{pmatrix} = \begin{pmatrix} -x\\ y \end{pmatrix} \]

别的操作

转置

转换行和列(ij->ji)

\[\begin{pmatrix} 1 & 2\\ 3 & 4\\ 5 & 6 \end{pmatrix}^T = \begin{pmatrix} 1 & 3 & 5\\ 2 & 4 & 6 \end{pmatrix} \]

性质

\((AB)^T = B^T A^T\)

单位矩阵

对角阵只有对角线上有非0的元素,单位矩阵为对角线上全是1的对角阵

\[I_{3\times 3} = \begin{pmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1 \end{pmatrix} \\ AA^{-1} = A^{-1}A = I\\ (AB)^{-1} = B^{-1}A^{-1} \]

向量的点乘与叉乘的矩阵形式

  • 点乘

    \[\vec{a}\cdot\vec{b} = \vec{a^T}\vec{b}\\ = \begin{pmatrix} x_a & y_a & z_a\end{pmatrix} \begin{pmatrix} x_b\\ y_b\\ z_b \end{pmatrix} =(x_a x_b+y_a y_b + z_a z_b) \]

  • 叉乘

    \[\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}\\ A^*为a的伴随矩阵\\ A^* = \begin{pmatrix} A_{11} & A_{21} & ... & A_{n1}\\ A_{12} & A_{22} & ... & A_{n2}\\ ... & ... & ... & ... \\ A_{1n} & A_{2n} & ... & A_{nn}\\ \end{pmatrix} =(A_{ij})^T \]

posted @ 2024-03-24 11:40  Telluluu  阅读(40)  评论(0)    收藏  举报