1. 程式人生 > >計算機圖形學-----齊次座標、空間變換矩陣和通用的建模方法

計算機圖形學-----齊次座標、空間變換矩陣和通用的建模方法

齊次座標系

齊次座標系是為了區分空間點和向量的。三維空間中, ( x , y , z ) (x,y,z)

可以表示一個點 p p 的位置,但是也可以表示一個向量 v \bf{v} 。對於點的移動是有實際意義的,但是移動向量沒有任何意義!點和向量在三維空間中的真正區別在於是否支援移動。

引入齊次座標 (

x , y , z , w ) T
(x,y,z,w)^T
w = 1 w=1 表示空間的點, w = 0 w=0 表示空間的向量。這樣是為了後期矩陣變換的時候,統一運算規則,不用單獨區分點或者向量。

空間變換矩陣

一般來說,在圖形學中,使用矩陣的方式進行變換,可以把多個連續的操作壓縮到一箇中,減少計算量;同時利用矩陣的優化演算法,可以提高計算效率。

位移矩陣
O f f s e t = [ 1 0 0 T x 0 1 0 T y 0 0 1 T z 0 0 0 1 ] \bf{Offset}= \begin{bmatrix} 1 & 0 & 0 & \bf{T_x} \\ 0 & 1 & 0 & \bf{T_y}\\ 0 & 0 & 1 & \bf{T_z} \\ 0 & 0 & 0 & 1 \end{bmatrix}
T x \bf{T_x} T y \bf{T_y} T z \bf{T_z} 分別表示沿著 x x y y z z 軸的平移距離。根據矩陣的運演算法則,如果是點的座標,那麼 w = 1 w=1 正好線性累加上位移;如果是向量, w = 0 w=0 會抵消位移的效果。

x x 軸的旋轉矩陣
R o t a t i o n X = [ 1 0 0 0 0 cos θ sin θ 0 0 sin θ cos θ 0 0 0 0 1 ] \bf{RotationX}= \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos{\theta} & -\sin{\theta} & 0\\ 0 & \sin{\theta} & \cos{\theta} & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}
這是右手系的變換矩陣, θ \theta 是從 x x 軸負向看向正向順時針的旋轉角度。

y y 軸的旋轉矩陣
R o t a t i o n Y = [ cos θ 0 sin θ 0 0 1 0 0 sin θ 0 cos θ 0 0 0 0 1 ] \bf{RotationY}= \begin{bmatrix} \cos{\theta} & 0 & \sin{\theta} & 0 \\ 0 & 1 & 0 & 0\\ -\sin{\theta} & 0 & \cos{\theta} & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}
這是右手系的變換矩陣, θ \theta 是從 y y 軸負向看向正向順時針的旋轉角度。

z z 軸的旋轉矩陣
R o t a t i o n Y = [ cos θ sin θ 0 0 sin θ cos θ 0 0 0 0 0 0 0 0 0 1 ] \bf{RotationY}= \begin{bmatrix} \cos{\theta} & -\sin{\theta} & 0 & 0 \\ \sin{\theta} & \cos{\theta} & 0 & 0 \\ 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}