现代计算机图形学入门-闫令琪,课程笔记。
Lecture 2 线性代数基础知识复习 (Review of Linear Algebra)
为什么要学线性代数?因为计算机图形学依赖很多基础知识,包括数学上的线性代数、微积分、统计;物理上的光学、力学等等。这些知识点都会穿插在这门课中进行讲解。
今天的课程,主要是讲线性代数中的向量、矩阵,包括向量的表示、点乘、叉乘,矩阵的变幻等等,属于是应用在计算机图形学中比较多且基础的一些知识点。
向量 Vectors
向量:同时具有大小和方向的几何对象。
- 如何表示:a 或者 a
- 另一种表示方法: AB=B−A
- 不需要关心向量的起点和位置,只关心大小和方向。比如 a 平移之后得到 a′ ,两个向量位置不同,但大小和方向相同,所以是同一个向量。
向量长度/单位向量
- 向量大小(长度)这样表示: ∣∣a∣∣
- 单位向量 (Unit vector)
- 长度为 1 的向量
- 表示方法:a^
- 如何计算:向量除以自身的长度 a^=a/∣∣a∣∣
- 常用来表示方向
向量求和 Vector Addition
几何学的方法,两个法则:
- 平行四边形法则:两个向量放在同一起点,平移两个使其首尾相连形成平行四边形,连接四边形的对角即是向量的和。
- 三角形法则:向量首尾相接,向量的最开始点和结束点相连。
代数的方法:使用笛卡尔坐标系。
如图,使用 X、Y 可以表示任意的向量。而且这种方式计算比较方便计算向量的长度:
∣∣A∣∣=x2+y2
向量求积 Vector Multiplication
向量由于有方向,所以与数字的求积不太一样。
点乘 Dot product
- 定义:两个向量的长度相乘,再乘以他们之间夹角的余弦。a⋅b=∣∣a∣∣∣∣b∣∣cosθ
- 上面公式可以推导出:cosθ=∣∣a∣∣∣∣b∣∣a⋅b
- 如果 a、b 是单位向量的话,那么分母是 1,即:cosθ=a^⋅b^
- 交换律:a⋅b=b⋅a
- 分配律:a⋅(b+c)=a⋅b+a⋅c
- 结合律:(ka)⋅b=a⋅(kb)=k(a⋅b)
直角坐标系下向量的点乘计算方式:
-
2D: a⋅b=(xaya)⋅(xbyb)=xaxb+yayb
-
3D: a⋅b=⎝⎛xayaza⎠⎞⋅⎝⎛xbybzb⎠⎞=xaxb+yayb+zazb
向量点乘在计算机图形学中的应用:
- 找到两个向量/方向之间的夹角
- 找到夹角基于可以计算向量的投影
- 有投影就可以对向量进行分解(点乘的逆运算)
- 如下图:比较 a⋅b 和 a⋅c 可以判断哪个向量离 b 更近。判断点乘的结果是大于/小于 0,可以判断方向是向上/向下。
叉乘 Cross product
- 如图所示,叉乘与点乘完全不同
- 叉乘的结果 c 与 ab 都垂直(即垂直于 ab 所在的平面)
- 可以使用右手螺旋定则来确定 c 的方向
- a x b, 四指沿着 a 方向,弯曲到 b 方向,大拇指的指向即是 c 的方向
- b x a 则相反(不满足交换律)
- 叉乘常用于建立三维空间的直角坐标系
直角坐标系下向量的叉乘计算方式:
向量叉乘在计算机图形学中的应用:
- 判断向量 b 在 a 的哪一侧(左/右)
- 如左图,使用 a x b,叉乘结果是正数说明在左侧
- 判断一个点与三角形的位置关系(内/外)
- 如右图,先判断 p 点与三个向量 abc 的关系,如果 p 均在三个向量的左侧,那就是在三角形内部,反之则是外部。
矩阵 Matrices
数学上,一个 (M x N) 的矩阵是一个由 M 行 N 列元素排列成的矩形阵列。矩阵里的元素可以是数字、符号或数学式。
矩阵的乘积
- 相乘的条件
- 第一个矩阵的列数等于第二个矩阵的行数,(M x N) (N x P) = (M x P)。
- 如何计算
- 比如下图的结果 26,位于矩阵的2行4列,去第一个矩阵找对应的行,第二个矩阵找对应列,然后作为向量进行点乘。5x4+2x3=26.
矩阵的性质
- 没有交换律:AB ≠ BA
- 结合律:(AB)C = A(BC)
- 分配律:A(B+C) = AB + AC,(A+B)C = AC + BC
矩阵的转置
行列互换,行变成列,列变成行。
如果两个矩阵相乘之后做转置,等于把两个矩阵调换位置之后分别做转置。
以矩阵表示向量乘积
本文作者:青波
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!