Lec02 线性代数回顾
向量(vector)
向量的模: ∣ ∣ a ⃗ ∣ ∣ ||\vec{a}|| ∣∣a∣∣
单位向量(a-hat): a ^ = a ⃗ ∣ ∣ a ⃗ ∣ ∣ \hat{a}=\frac{\vec{a}}{||\vec{a}||} a^=∣∣a∣∣a
点乘(dot product)
-
笛卡尔坐标运算:
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}= \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=⎝⎛xayaza⎠⎞⋅⎝⎛xbybzb⎠⎞=xaxb+yayb+zazb -
点乘的作用一,求夹角: cos θ = a ⃗ ⋅ b ⃗ ∣ ∣ a ⃗ ∣ ∣ ∣ ∣ b ⃗ ∣ ∣ \cos\theta=\frac{\vec{a}\cdot\vec{b}}{||\vec{a}||||\vec{b}||} cosθ=∣∣a∣∣∣∣b∣∣a⋅b
-
点乘的作用二,找投影(b-perp): b ⃗ \vec{b} b在 a ⃗ \vec{a} a上的投影
b ⊥ ⃗ = k a ^ k = ∣ ∣ b ⃗ ∣ ∣ cos θ = b ⃗ ⋅ a ^ \vec{b_{\perp}}=k\hat{a}\\ k=||\vec{b}||\cos\theta=\vec{b}\cdot\hat{a} b⊥=ka^k=∣∣b∣∣cosθ=b⋅a^ -
点乘的应用:
- 分解向量(为互相垂直的两个)
- 计算两单位向量有多接近(点乘积:1到0)
- 确定前后方向(点乘积大于或小于0)
点乘计算笛卡尔坐标(投影):
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
叉乘(cross product)
叉乘对构建坐标系很有帮助。
本课程采用右手系(OpenGL是左手系)。
右手坐标系满足: z ⃗ = x ⃗ × y ⃗ \vec{z}=\vec{x}\times\vec{y} z=x×y(或 w ⃗ = u ⃗ × v ⃗ \vec{w}=\vec{u}\times\vec{v} w=u×v)
a
⃗
×
b
⃗
=
(
y
a
z
b
−
y
b
z
a
z
a
x
b
−
z
b
x
a
x
a
y
b
−
x
b
y
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}= \begin{pmatrix} y_az_b-y_bz_a\\ z_ax_b-z_bx_a\\ x_ay_b-x_by_b \end{pmatrix}= \bold{A}\vec{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×b=⎝⎛yazb−ybzazaxb−zbxaxayb−xbyb⎠⎞=Ab=⎝⎛0za−ya−za0xaya−xa0⎠⎞⎝⎛xbybzb⎠⎞
叉乘的应用:
- 判断左右(叉乘结果的正负): x ⃗ × y ⃗ = z ⃗ \vec{x}\times\vec{y}=\vec{z} x×y=z, y ⃗ × x ⃗ = − z ⃗ \vec{y}\times\vec{x}=\vec{-z} y×x=−z
- 内外(P点一直在三条边的左边/右边): A P ⃗ × A B ⃗ \vec{AP}\times\vec{AB} AP×AB、 B P ⃗ × B C ⃗ \vec{BP}\times\vec{BC} BP×BC、 C P ⃗ × C A ⃗ \vec{CP}\times\vec{CA} CP×CA 同号,即意味着P在三角形内部
矩阵(matrix)
Matrix-Vector Multipulication:
a
⃗
⋅
b
⃗
=
a
⃗
⊤
b
⃗
=
(
x
a
y
a
z
a
)
(
x
b
y
b
z
b
)
\vec{a}\cdot\vec{b}=\vec{a}^\top\vec{b}= \begin{pmatrix} x_a & y_a & z_a \end{pmatrix} \begin{pmatrix} x_b \\ y_b \\ z_b \end{pmatrix}
a⋅b=a⊤b=(xayaza)⎝⎛xbybzb⎠⎞