Last updated 2 years ago
Was this helpful?
線性代數 ⟩ 向量 ⟩ 分解 ⟩ 垂直分解
向量 u\mathbf{u}u 可分解成: u=a+b\mathbf{u} = \mathbf{a} + \mathbf{b}u=a+b,其中 a∥v, b⊥v (v≠0)\mathbf{a} \parallel \mathbf{v}, \ \mathbf{b} \perp \mathbf{v} \ \ (\mathbf{v} \neq \mathbf{0})a∥v, b⊥v (v=0)
這種分解是唯一的,而且: a=projv(u)=(u⋅vv⋅v)v\mathbf{a} = \text{proj}_{\mathbf{v}}(\mathbf{u}) = \left(\dfrac{\mathbf{u}\cdot\mathbf{v}}{\mathbf{v}\cdot\mathbf{v}}\right)\mathbf{v} a=projv(u)=(v⋅vu⋅v)v b=perpv(u)=u−a\mathbf{b} = \text{perp}_{\mathbf{v}}(\mathbf{u}) = \mathbf{u} - \mathbf{a}b=perpv(u)=u−a
先備:垂直向量性質2、
證明:
這兩個分量都可以看做是 u\mathbf{u}u 的線性變換。(可由「內積性質」證明)
這種垂直分解不只二維或三維空間可以用,只要有內積運算的向量空間都可以用。
垂直向量
平行向量
繞軸旋轉矩陣
矩陣乘法
Mathematics for 3D Game Programming & Computer Graphics (2nd Edition, 2004)
projv(u)=(u⋅vv⋅v)v\text{proj}_{\mathbf{v}}(\mathbf{u}) = \left(\dfrac{\mathbf{u}\cdot\mathbf{v}}{\mathbf{v}\cdot\mathbf{v}}\right)\mathbf{v} projv(u)=(v⋅vu⋅v)v
perpv(u)=u−(u⋅vv⋅v)v\text{perp}_{\mathbf{v}}(\mathbf{u}) = \mathbf{u} - \left(\dfrac{\mathbf{u}\cdot\mathbf{v}}{\mathbf{v}\cdot\mathbf{v}}\right)\mathbf{v}perpv(u)=u−(v⋅vu⋅v)v
🎖 證明:
B=1∥v∥2[v22+v32−v1v2−v1v3−v2v1v12+v32−v2v3−v3v1−v3v2v12+v22]\mathbf{B} = \dfrac{1}{\|\mathbf{v}\|²} \begin{bmatrix} v_2^2 + v_3^2 & -v_1 v_2 & -v_1 v_3 \\ -v_2 v_1 & v_1^2 + v_3^2 & -v_2 v_3 \\ -v_3 v_1 & -v_3 v_2 & v_1^2 + v_2^2 \end{bmatrix} B=∥v∥21v22+v32−v2v1−v3v1−v1v2v12+v32−v3v2−v1v3−v2v3v12+v22
perpv(u)=u−Au=Bu\text{perp}_{\mathbf{v}}(\mathbf{u}) = \mathbf{u} - \mathbf{Au} = \mathbf{Bu}perpv(u)=u−Au=Bu
B=I−A=[100010001]−1∥v∥2[v12v1v2v1v3v2v1v22v2v3v3v1v3v2v32]\mathbf{B} = \mathbf{I-A} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} - \dfrac{1}{\|\mathbf{v}\|²} \begin{bmatrix} v_1^2 & v_1 v_2 & v_1 v_3 \\ v_2 v_1 & v_2^2 & v_2 v_3 \\ v_3 v_1 & v_3 v_2 & v_3^2 \end{bmatrix}B=I−A=100010001−∥v∥21v12v2v1v3v1v1v2v22v3v2v1v3v2v3v32,其中 ∥v∥2=v12+v22+v32\|\mathbf{v}\|^2 = v_1^2 + v_2^2 + v_3^2∥v∥2=v12+v22+v32
通分後,即可得結果。