A Swift and Brutal Introduction to Linnear Alfebra!
0 图形学依赖于… Graphics’ Dependencies
- 基础数学
- 线性代数 linear algebra
- 微积分 calculus
- 统计学 statistics
- 基础物理
- 光学 Optics
- 力学 Mechanics
- 其他
- 信号处理 signal processing
- 数值分析 numerical analysis
- 一点点的美学 A bit of aesthtics
1 向量 Vectors
1.1 向量的归一化 Vector Normalization
a ^ = a ⃗ / ∣ a ∣ \hat{a} = \vec{a}/|a| a^=a/∣a∣
1.2 向量的加法 Vector Addition
- 几何理解 Grometrically
- 平行四边形法则合三角形法则 Parallelogram law & Triangle law
- 代数 algebraically
- 各坐标相加 Simply add coordinates
A = 4 x + 3 y , A = ( x y ) , A T = ( x , y ) , ∣ A ∣ = x 2 + y 2 \boldsymbol{A}=4x+3y,\; \boldsymbol{A}=\begin{pmatrix}x\\y\end{pmatrix},\; \boldsymbol{A}^T=(x,y),\; |\boldsymbol{A}|=\sqrt{x^2+y^2} \quad A=4x+3y,A=(xy),AT=(x,y),∣A∣=x2+y2
- 各坐标相加 Simply add coordinates
1.3 向量的点乘 Dot(scalar) Product
1.3.1 定义与用法
a ⃗ ⋅ b ⃗ = ∣ a ⃗ ∣ ∣ b ⃗ ∣ cos θ , cos θ = a ⃗ ⋅ b ⃗ ∣ a ⃗ ∣ ∣ b ⃗ ∣ cos θ \vec{a}\cdot\vec{b}=|\vec{a}||\vec{b}|\cos\theta,\; \cos\theta=\frac{\vec{a}\cdot\vec{b}}{|\vec{a}||\vec{b}|\cos\theta} a⋅b=∣a∣∣b∣cosθ,cosθ=∣a∣∣b∣cosθa⋅b
对 于 单 位 向 量 : c o s θ = a ^ ⋅ b ^ 对于单位向量:\quad cos\theta=\hat{a}\cdot\hat{b} 对于单位向量:cosθ=a^⋅b^
1.3.2性质 Properties
a ⃗ ⋅ b ⃗ = b ⃗ ⋅ a ⃗ \vec{a}\cdot\vec{b}=\vec{b}\cdot\vec{a} a⋅b=b⋅a
a ⃗ ⋅ ( b ⃗ + c ⃗ ) = a ⃗ ⋅ b ⃗ + a ⃗ ⋅ c ⃗ \vec{a}\cdot(\vec{b}+\vec{c})=\vec{a}\cdot\vec{b}+\vec{a}\cdot\vec{c} a⋅(b+c)=a⋅b+a⋅c
( k a ⃗ ) ⋅ b ⃗ = a ⃗ ⋅ ( k b ⃗ ) = k ( a ⃗ ⋅ b ⃗ ) (k\vec{a})\cdot\vec{b}=\vec{a}\cdot(k\vec{b})=k(\vec{a}\cdot\vec{b}) (ka)⋅b=a⋅(kb)=k(a⋅b)
1.3.3笛卡尔坐标系下的点积 Dot Product in Cartesian Coordinates
- In 2D
a ⃗ ⋅ b ⃗ = ( x a y a ) ⋅ ( x b y b ) = x a x b + y a y b \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 a⋅b=(xaya)⋅(xbyb)=xaxb+yayb - In 3D
a ⃗ ⋅ b ⃗ ⋅ c ⃗ = ( x a y a z a ) ⋅ ( x b y b z b ) = x a x b + y a y b + z a z b \vec{a}\cdot\vec{b}\cdot\vec{c}=\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 a⋅b⋅c=⎝⎛xayaza⎠⎞⋅⎝⎛xbybzb⎠⎞=xaxb+yayb+zazb
1.3.4 图形学中的点积 Dot Product for Graphics
-
求两个向量之间的角度(例如光源在表面之间角度的余弦)Find angle between two vectors (e.g. cosine of angle between light source and surface)
-
计算一个向量在另一个向量上的投影 Finding projection of one vector on another
b ⃗ ⊥ = k a ^ , k = ∣ b ⃗ ⊥ ∣ = ∣ b ⃗ ∣ cos θ \vec{b}_\bot=k\hat{a},\;k=|\vec{b}_\bot|=|\vec{b}|\cos\theta b⊥=ka^,k=∣b⊥∣=∣b∣cosθ
-
测量两个方向有多接近 Measure how close two directions are
-
分解向量 Decompose a vector
-
判断朝向 Determine forward / backward
1.4 向量的叉乘 Cross(vector) Product
1.4.1 定义与用法
- 叉乘结果是一个向量,与两个初始向量垂直 Cross product is orthogonal to two initial vectors
- 叉乘的结果由右手定则确定 Direction determined by right-hand rule
- 用于构建坐标系 Useful in constructing coordinate systems
- 叉乘结果的模在大小上与组成两个向量组成三角形面积相等
∣ a ⃗ × b ⃗ ∣ = ∣ a ⃗ ∣ ∣ b ⃗ ∣ sin θ |\vec{a}\times\vec{b}|=|\vec{a}||\vec{b}|\sin\theta ∣a×b∣=∣a∣∣b∣sinθ
1.4.2 性质 Properties
a ⃗ × a ⃗ = 0 ⃗ \vec{a}\times\vec{a}=\vec{0} a×a=0
a ⃗ × b ⃗ = − b ⃗ × a ⃗ \vec{a}\times\vec{b}=-\vec{b}\times\vec{a} a×b=−b×a
a ⃗ × ( b ⃗ + c ⃗ ) = a ⃗ × b ⃗ + a ⃗ × c ⃗ \vec{a}\times(\vec{b}+\vec{c})=\vec{a}\times\vec{b}+\vec{a}\times\vec{c} a×(b+c)=a×b+a×c
a ⃗ × ( k b ⃗ ) = k ( a ⃗ × b ⃗ ) \vec{a}\times(k\vec{b})=k(\vec{a}\times\vec{b}) a×(kb)=k(a×b)
1.4.3 笛卡尔坐标系下的叉乘 Cross Product: Cartesian Formula
a ⃗ × b ⃗ = ( y a z b − y b z a z a x b − x a z b x a y b − y a x b ) \vec{a}\times\vec{b}=\begin{pmatrix} y_az_b-y_bz_a \\ z_ax_b-x_az_b \\x_ay_b-y_ax_b \end{pmatrix} a×b=⎝⎛yazb−ybzazaxb−xazbxayb−yaxb⎠⎞
1.4.4 图形学中的叉乘 Cross Product in Graphics
-
判定左和右
- 如下图,在右手坐标系中,a向量叉乘b向量结果为正,则b在a的左侧
- 如下图,在右手坐标系中,a向量叉乘b向量结果为正,则b在a的左侧
-
判断内和外
- 如下图,按顺序叉乘三次结果正负相同则在内部,否则在外部
- 如下图,按顺序叉乘三次结果正负相同则在内部,否则在外部
1.5 正交坐标系 Orthonormal Bases / Coordinate Frames
如 果 有 三 个 向 量 满 足 ∣ u ⃗ ∣ = ∣ v ⃗ ∣ = ∣ w ⃗ ∣ = 1 , u ⃗ ⋅ v ⃗ + v ⃗ ⋅ w ⃗ + u ⃗ ⋅ w ⃗ = 0 , w ⃗ = u ⃗ × v ⃗ 如果有三个向量满足\quad|\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} 如果有三个向量满足∣u∣=∣v∣=∣w∣=1,u⋅v+v⋅w+u⋅w=0,w=u×v
则 p ⃗ = ( p ⃗ ⋅ u ⃗ ) u ⃗ + ( p ⃗ ⋅ v ⃗ ) v ⃗ + ( p ⃗ ⋅ w ⃗ ) w ⃗ 则\quad \vec{p}=(\vec{p}\cdot\vec{u})\vec{u}+(\vec{p}\cdot\vec{v})\vec{v}+(\vec{p}\cdot\vec{w})\vec{w} 则p=(p⋅u)u+(p⋅v)v+(p⋅w)w
2 矩阵 Matrix
在图形学中,普遍用于表示变换
In Graphics, pervasively used to represent transformations
2.1 什么是矩阵 What is a matrix
- 一个数字阵列 Array of numbers (m × n = m rows, n columns)
- 与标量的加法和乘法运算为每个元素单独运算 Addition and multiplication by a scalar are trivial:
element by element
2.2 矩阵与矩阵的乘积 Matrix-Matrix Multiplication
- A的列数必须等于B的行数才能进行乘法运算 The number of columns in A must equal to the number of rows in B
( M × N ) ( N × P ) = ( M × P ) (M\times N)(N\times P)=(M\times P) (M×N)(N×P)=(M×P) - 乘积中元素(i,j)是A中第i行和B中第j列的点积结果
( 1 3 5 2 0 4 ) ( 3 6 9 4 2 7 8 3 ) = ( 9 27 33 13 19 44 61 26 8 28 32 ? ) \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&27&33&13\\19&44&61&26\\8&28&32&? \end{pmatrix} ⎝⎛150324⎠⎞(32679843)=⎝⎛91982744283361321326?⎠⎞
? = ( 0 , 4 ) ⋅ ( 4 , 3 ) = 0 + 12 = 12 ?=(0,4)\cdot(4,3)=0+12=12 ?=(0,4)⋅(4,3)=0+12=12
2.3 矩阵的性质 Properties
- 没有交换律 Non-commutative(AB and BA are different in general)
- 有结合律和分配律 Associative and distributive
( A B ) C = A ( B C ) , A ( B + C ) = A B + A C (AB)C=A(BC),\;A(B+C)=AB+AC (AB)C=A(BC),A(B+C)=AB+AC
2.4 矩阵与向量的乘积 Matrix-Vector Multiplication
- 将向量视为列矩阵 Treat vector as a column matrix (m×1)
- 是变换的核心 Key for transforming points
关 于 y 轴 对 称 的 变 换 : ( − 1 0 0 1 ) ( x y ) = ( − x y ) 关于y轴对称的变换:\quad\begin{pmatrix} -1&0\\0&1\\ \end{pmatrix}\begin{pmatrix} x \\ y \\ \end{pmatrix}=\begin{pmatrix} -x \\ y \\ \end{pmatrix} 关于y轴对称的变换:(−1001)(xy)=(−xy)
2.5 矩阵的转置 Transpose of a Matrix
- 将矩阵的行和列互换 Switch rows and columns (ij -> ji)
( 1 2 3 4 5 6 ) T = ( 1 3 5 2 4 6 ) \begin{pmatrix} 1&2\\3&4\\5&6 \end{pmatrix}^T=\begin{pmatrix} 1&3&5\\2&4&6\\ \end{pmatrix} ⎝⎛135246⎠⎞T=(123456) - 转置的性质 Property
( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT
2.6 单位矩阵和逆矩阵 Identity Matrix and Inverses
- 单位矩阵 Identity Matrix
- 单位矩阵的对角线都为1
I 3 × 3 = ( 1 0 0 0 1 0 0 0 1 ) I_{3×3}=\begin{pmatrix} 1&0&0\\0&1&0\\0&0&1 \end{pmatrix} I3×3=⎝⎛100010001⎠⎞
- 单位矩阵的对角线都为1
- 逆矩阵 Inverses
- 两个矩阵乘积为单位矩阵,则两个矩阵互逆
A A − 1 = A − 1 A = I AA^{-1}=A^{-1}A=I AA−1=A−1A=I - 逆矩阵的性质
( A B ) − 1 = B − 1 A − 1 (AB)^{-1}=B^{-1}A^{-1} (AB)−1=B−1A−1
- 两个矩阵乘积为单位矩阵,则两个矩阵互逆
3 矩阵形式的向量乘积 Vector multiplication in Matrix form
3.1 点乘 Dot product
a ⃗ ⋅ b ⃗ = a ⃗ T b ⃗ = ( x a y a z a ) ( x b y b z b ) = ( x a x b y a y b z a z b ) \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}=\begin{pmatrix} x_ax_b&y_ay_b&z_az_b\end{pmatrix} a⋅b=aTb=(xayaza)⎝⎛xbybzb⎠⎞=(xaxbyaybzazb)
3.2 叉乘 Cross product
a ⃗ × b ⃗ = A ∗ b ⃗ = ( 0 − z a y a z a 0 − x a − y a x a 0 ) ⏟ a 向 量 的 伴 随 矩 阵 ( d u a l m a t r i x ) ( x b y b z b ) \vec{a}\times\vec{b}=A^*\vec{b}=\underbrace{\begin{pmatrix} 0&-z_a&y_a\\z_a&0&-x_a\\-y_a&x_a&0 \end{pmatrix}}_{\rm{a向量的伴随矩阵(dual\,matrix)}}\begin{pmatrix} x_b\\y_b\\z_b \end{pmatrix} a×b=A∗b=a向量的伴随矩阵(dualmatrix) ⎝⎛0za−ya−za0xaya−xa0⎠⎞⎝⎛xbybzb⎠⎞