Last updated 2 years ago
Was this helpful?
線性代數 ⟩ 向量 ⟩ 射影向量 ⟩ 向量垂直分解矩陣
向量 u\mathbf{u}u 可分解成「沿著 v\mathbf{v}v 向量」與「垂直 v\mathbf{v}v 向量」的兩個分量:u=projv(u)+perpv(u)\mathbf{u} = \text{proj}_{\mathbf{v}}(\mathbf{u}) + \text{perp}_{\mathbf{v}}(\mathbf{u}) u=projv(u)+perpv(u)
其中: projv(u)=(u⋅vv⋅v)v=Au\text{proj}_{\mathbf{v}}(\mathbf{u}) = \left(\dfrac{\mathbf{u}\cdot\mathbf{v}}{\mathbf{v}\cdot\mathbf{v}}\right)\mathbf{v} = \mathbf{Au}projv(u)=(v⋅vu⋅v)v=Au perpv(u)=u−(u⋅vv⋅v)v=Bu\text{perp}_{\mathbf{v}}(\mathbf{u}) = \mathbf{u} - \left(\dfrac{\mathbf{u}\cdot\mathbf{v}}{\mathbf{v}\cdot\mathbf{v}}\right)\mathbf{v} = \mathbf{Bu}perpv(u)=u−(v⋅vu⋅v)v=Bu A=1∥v∥2[v12v1v2v1v3v2v1v22v2v3v3v1v3v2v32]=[v1v∥v∥2v2v∥v∥2v3v∥v∥2]\mathbf{A} = \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} = \begin{bmatrix} \dfrac{v_1\mathbf{v}}{\|\mathbf{v}\|²} & \dfrac{v_2 \mathbf{v}}{\|\mathbf{v}\|²} & \dfrac{v_3 \mathbf{v}}{\|\mathbf{v}\|²} \end{bmatrix} A=∥v∥21v12v2v1v3v1v1v2v22v3v2v1v3v2v3v32=[∥v∥2v1v∥v∥2v2v∥v∥2v3v] (證明) 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
如果我們知道 projv(u)\text{proj}_{\mathbf{v}}(\mathbf{u})projv(u) 是一個線性變換,就可以推導出:
projv(u)=[v1v∥v∥2v2v∥v∥2v3v∥v∥2]u\text{proj}_{\mathbf{v}}(\mathbf{u}) = \begin{bmatrix} \dfrac{v_1\mathbf{v}}{\|\mathbf{v}\|²} & \dfrac{v_2 \mathbf{v}}{\|\mathbf{v}\|²} & \dfrac{v_3 \mathbf{v}}{\|\mathbf{v}\|²} \end{bmatrix} \mathbf{u}projv(u)=[∥v∥2v1v∥v∥2v2v∥v∥2v3v]u
因為此線性變換的三個行向量就是三個基底向量 i,j,k\mathbf{i}, \mathbf{j}, \mathbf{k}i,j,k 在向量 v\mathbf{v}v 上的投影,例如:
projv(i)=(i⋅vv⋅v)v=v1v∥v∥2\text{proj}_{\mathbf{v}}(\mathbf{i}) = \left(\dfrac{\mathbf{i}\cdot\mathbf{v}}{\mathbf{v}\cdot\mathbf{v}}\right)\mathbf{v} = \dfrac{v_1\mathbf{v}}{\|\mathbf{v}\|²}projv(i)=(v⋅vi⋅v)v=∥v∥2v1v
A=1∥v∥2[v12v1v2v1v3v2v1v22v2v3v3v1v3v2v32]=[v1v∥v∥2v2v∥v∥2v3v∥v∥2]\mathbf{A} = \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} = \begin{bmatrix} \dfrac{v_1\mathbf{v}}{\|\mathbf{v}\|²} & \dfrac{v_2 \mathbf{v}}{\|\mathbf{v}\|²} & \dfrac{v_3 \mathbf{v}}{\|\mathbf{v}\|²} \end{bmatrix} A=∥v∥21v12v2v1v3v1v1v2v22v3v2v1v3v2v3v32=[∥v∥2v1v∥v∥2v2v∥v∥2v3v]
🎖 證明: 射影向量的矩陣表示法
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
通分後,即可得結果。
對特定軸的旋轉矩陣
矩陣乘法
Mathematics for 3D Game Programming & Computer Graphics (2nd Edition, 2004)