Review of Linear Algebra
点乘
图形学中默认使用列向量
- 二维
a ⃗ ⋅ b ⃗ = ( x a y a ) ⋅ ( x b y b ) = x a x b + y a y b \vec{a} \cdot \vec{b}=\left(\begin{array}{l} x_{a} \\ y_{a} \end{array}\right) \cdot\left(\begin{array}{l} x_{b} \\ y_{b} \end{array}\right)=x_{a} x_{b}+y_{a} y_{b} a⋅b=(xaya)⋅(xbyb)=xaxb+yayb
- 三维
a ⃗ ⋅ 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}=\left(\begin{array}{c} x_{a} \\ y_{a} \\ z_{a} \end{array}\right) \cdot\left(\begin{array}{l} x_{b} \\ y_{b} \\ z_{b} \end{array}\right)=x_{a} x_{b}+y_{a} y_{b}+z_{a} z_{b} a⋅b=⎝ ⎛xayaza⎠ ⎞⋅⎝ ⎛xbybzb⎠ ⎞=xaxb+yayb+zazb
- 作用
- 找到两个向量间的夹角
- 找到一个向量在另一个向量上的投影
- 分解向量
- 方向性:根据点乘的值 ( [ − 1 , 1 ] [-1,1] [−1,1])
叉积
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}=\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)
a×b=⎝
⎛yazb−ybzazaxb−xazbxayb−yaxb⎠
⎞
- Later in this lecture
a ⃗ × b ⃗ = A ∗ b = ( 0 − z a y a z a 0 − x a − y a x a 0 ) ( x b y b z b ) \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×b=A∗b=⎝ ⎛0za−ya−za0xaya−xa0⎠ ⎞⎝ ⎛xbybzb⎠ ⎞
- 作用
- 判断向量的左右关系:
- 叉积为正在左侧,否则在右侧
- 判断一个点是否在三角形内:
P
P
P 点在三条边的同侧(正负号相同)
- Corner Case:结果为0,自己定义在内侧还是外侧
- 判断向量的左右关系:
正交坐标系
Any set of 3 vectors (in 3D) that
∥
u
⃗
∥
=
∥
v
⃗
∥
=
∥
w
⃗
∥
=
1
u
⃗
⋅
v
⃗
=
v
⃗
⋅
w
⃗
=
u
⃗
⋅
w
⃗
=
0
w
⃗
=
u
⃗
×
v
⃗
(right-handed)
\begin{aligned} &\|\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) } \end{aligned}
∥u∥=∥v∥=∥w∥=1u⋅v=v⋅w=u⋅w=0w=u×v (right-handed)
- 可以将任意一个向量分析到这三个轴上:投影方法
p ⃗ = ( p ⃗ ⋅ u ⃗ ) u ⃗ + ( p ⃗ ⋅ v ⃗ ) v ⃗ + ( p ⃗ ⋅ w ⃗ ) w ⃗ \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
矩阵
-
矩阵乘法:需要算第几行第几列,就去找第几行第几列,把两个向量点乘起来
-
Element ( i , j ) (i, j) (i,j) in the product is the dot product of row i i i from A A A and column j j j from B B B
-
没有交换率
-
有以下规律
- ( A B ) C = A ( B C ) (AB)C=A(BC) (AB)C=A(BC)
- A ( B + C ) = A B + A C A(B+C) = AB + AC A(B+C)=AB+AC
- ( A + B ) C = A C + B C (A+B)C = AC + BC (A+B)C=AC+BC
-
向量可以当作列矩阵
-
-
矩阵转置
- 交换行和列 ( i j → j i ) (ij \to ji) (ij→ji)
( 1 2 3 4 5 6 ) T = ( 1 3 5 2 4 6 ) \left(\begin{array}{ll} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{array}\right)^{T}=\left(\begin{array}{lll} 1 & 3 & 5 \\ 2 & 4 & 6 \end{array}\right) ⎝ ⎛135246⎠ ⎞T=(123456)
- 性质: ( A B ) T = B T A T (A B)^{T}=B^{T} A^{T} (AB)T=BTAT
-
单位矩阵
-
是一个对角阵,只有对角线上有非0元素
-
来定义矩阵的逆
I 3 × 3 = ( 1 0 0 0 1 0 0 0 1 ) I_{3 \times 3}=\left(\begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array}\right) I3×3=⎝ ⎛100010001⎠ ⎞
-
-
矩阵的逆
- A A − 1 = A − 1 A = I A A^{-1}=A^{-1} A=I AA−1=A−1A=I
- ( A B ) − 1 = B − 1 A − 1 (A B)^{-1}=B^{-1} A^{-1} (AB)−1=B−1A−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 ) \begin{aligned} & \vec{a} \cdot \vec{b}=\vec{a}^{T} \vec{b} \\ =&\left(\begin{array}{lll} x_{a} & y_{a} & z_{a} \end{array}\right)\left(\begin{array}{l} x_{b} \\ y_{b} \\ z_{b} \end{array}\right)=\left(x_{a} x_{b}+y_{a} y_{b}+z_{a} z_{b}\right) \end{aligned} =a⋅b=aTb(xayaza)⎝ ⎛xbybzb⎠ ⎞=(xaxb+yayb+zazb)
- Cross product
a ⃗ × b ⃗ = A ∗ b = ( 0 − z a y a z a 0 − x a − y a x a 0 ) ( x b y b z b ) \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×b=A∗b=⎝ ⎛0za−ya−za0xaya−xa0⎠ ⎞⎝ ⎛xbybzb⎠ ⎞
PS: A ∗ A^* A∗ :dual matrix of vector a ⃗ \vec{a} a