一、視圖空間的基礎數學框架
1.1 齊次坐標與變換矩陣
三維坐標系變換采用4×4齊次坐標矩陣,其通用形式為:
M = [ A 3 × 3 b 3 × 1 0 1 × 3 1 ] \mathbf{M} = \begin{bmatrix} \mathbf{A}_{3×3} & \mathbf{b}_{3×1} \\ \mathbf{0}_{1×3} & 1 \end{bmatrix} M=[A3×3?01×3??b3×1?1?]
其中:
- A \mathbf{A} A 包含旋轉、縮放變換
- b \mathbf{b} b 為平移向量
- 坐標點表示為 ( x , y , z , 1 ) T (x,y,z,1)^T (x,y,z,1)T
1.2 相機參數化表示
相機狀態由六自由度參數定義:
- 位置坐標: C = ( X , Y , Z ) \mathbf{C} = (X,Y,Z) C=(X,Y,Z)
- 歐拉角: ( θ x , θ y , θ z ) (θ_x,θ_y,θ_z) (θx?,θy?,θz?)(俯仰、偏航、滾動)
- 縮放因子: s s s
二、相機坐標系變換原理
2.1 剛體變換分解
2.1.1 平移變換矩陣
將世界坐標原點平移至相機位置:
T = [ 1 0 0 ? X 0 1 0 ? Y 0 0 1 ? Z 0 0 0 1 ] \mathbf{T} = \begin{bmatrix} 1 & 0 & 0 & -X \\ 0 & 1 & 0 & -Y \\ 0 & 0 & 1 & -Z \\ 0 & 0 & 0 & 1 \end{bmatrix} T= ?1000?0100?0010??X?Y?Z1? ?
2.1.2 旋轉變換矩陣
構造基于觀察方向的正交基:
- 前向向量: f = g ∥ g ∥ \mathbf{f} = \frac{\mathbf{g}}{\|\mathbf{g}\|} f=∥g∥g?
- 右向向量: r = t × f ∥ t × f ∥ \mathbf{r} = \frac{\mathbf{t} \times \mathbf{f}}{\|\mathbf{t} \times \mathbf{f}\|} r=∥t×f∥t×f?
- 上向向量: u = f × r \mathbf{u} = \mathbf{f} \times \mathbf{r} u=f×r
旋轉矩陣的解析形式:
R = [ r x r y r z 0 u x u y u z 0 ? f x ? f y ? f z 0 0 0 0 1 ] \mathbf{R} = \begin{bmatrix} r_x & r_y & r_z & 0 \\ u_x & u_y & u_z & 0 \\ -f_x & -f_y & -f_z & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} R= ?rx?ux??fx?0?ry?uy??fy?0?rz?uz??fz?0?0001? ?
2.2 視圖矩陣合成
組合平移與旋轉得到視圖矩陣:
M v i e w = R ? T = [ r ? r ? C u ? u ? C ? f f ? C 0 1 ] \mathbf{M}_{view} = \mathbf{R} \cdot \mathbf{T} = \begin{bmatrix} \mathbf{r} & -\mathbf{r}\cdot\mathbf{C} \\ \mathbf{u} & -\mathbf{u}\cdot\mathbf{C} \\ -\mathbf{f} & \mathbf{f}\cdot\mathbf{C} \\ 0 & 1 \end{bmatrix} Mview?=R?T= ?ru?f0??r?C?u?Cf?C1? ?
三、投影變換原理
3.1 正交投影
3.1.1 規范視體定義
正交投影將立方體視體映射到規范立方體[-1,1]3:
M o r t h o = [ 2 r ? l 0 0 ? r + l r ? l 0 2 t ? b 0 ? t + b t ? b 0 0 2 n ? f ? n + f n ? f 0 0 0 1 ] \mathbf{M}_{ortho} = \begin{bmatrix} \frac{2}{r-l} & 0 & 0 & -\frac{r+l}{r-l} \\ 0 & \frac{2}{t-b} & 0 & -\frac{t+b}{t-b} \\ 0 & 0 & \frac{2}{n-f} & -\frac{n+f}{n-f} \\ 0 & 0 & 0 & 1 \end{bmatrix} Mortho?=