(轉)解讀Flash矩陣

轉自:函數

http://hi.baidu.com/cabtw/item/d2dbd212d4ae3e9398ce337f網站

圖片看不到請去原網站看3d

 

Matrixblog

scale(a,d);遊戲

比例變換就是將平面上任意一點的橫座標放大或縮小S11倍,縱座標放大或縮小S22倍,即 圖片

rotate(弧度),弧度 =(角度/ 180)* Math.PI 旋轉變換就是將平面上任意一點繞原點旋轉θ角,通常規定逆時針方向爲正,順時針方向爲負遊戲開發

translate(tx,ty) 平移交換指的是將平面上任意一點沿X方向移動C。,沿Y方向移動ty開發

平移交換不能直接用2X2矩陣來表示。下述齊次座標變換矩陣則可解決這個問題,所謂齊次座標就是將一個本來是n維的向量用一個n+1維向量來表示,在空間直角座標系中,任意一點可用一個三維座標矩陣[x y z]表示。若是將該點用一個四維座標的矩陣[Hx Hy Hz H]表示時,則稱爲齊次座標表示方法。在齊次座標中,最後一維座標H稱爲比例因子.那麼對於二維空間而言,把該空間內任意點的齊次座標記爲(x,y,h),則該點的二維直角座標爲(x/h,y/h)。齊次座標表示不是惟一的,一般h=1時,稱爲規格化齊次座標。在計算機圖形裏咱們一般採用的是規格化齊次座標。使用齊次座標以後,平移交換可用矩陣乘法表示以下:
仿射轉換,其特徵就是一切變形都不會破壞線條的線性。變形後水平和垂直方向上的長度比例能夠發生變化。但直線永遠不會變成曲線。座標系內各點的變換都是均勻的,不存在局部扭曲和象限的塌縮。一對平行線,不管通過多少次仿射變形,都將保持平行,不會有交集。既然屬於簡單變形,因此仿射變形的過程能夠寫爲數學函數表達式。仿射變形主要是經過變量乘以變換矩陣實現的。考慮到位移難以用矩陣乘法得到,因此須要引入了一個位移矢量加權。其通用數學表達式爲:f(x)=Ax+b其中,A是一個變換矩陣[abcd],b表示平移矢量(tx,ty)。經過這個數學公式,能夠計算諸如平移,旋轉,拉伸等仿射變形。在計算機語言中,通常都會將位移矢量與變形矩陣合併在一個矩陣之中。這個矩陣爲三行三列,左上角的兩行兩列是變形矩陣,第三列爲平移矢量,並將餘下的位置用數值補足(UVW)。如圖所示 get

Matrix3d:變換後點的(X’,Y’,Z’)= (x,y,z) *   ( 4*4矩陣)
scale:模型的大小變化,在透視投影中用來產生場景深度效果 translate:物體沿着三個座標軸的任意一個到另外一個位置的移動 rotate:頂點的每一個座標值乘上θ角(物體旋轉的角度)的sin或cos值就獲得了旋轉後的座標數學

當點P(x,y,z)繞X軸旋轉α度時,點P的x座標值不變,其旋轉先後的座標關係爲:

當點P(x,y,z)繞Y軸旋轉β度時,點P的y座標值不變,其旋轉先後的座標關係爲:

當點P(x,y,z)繞Z軸旋轉γ度時,點P的z座標值不變,其旋轉先後的座標關係爲: 得出的變換矩陣以下

除了矩陣旋轉還有,Euler旋轉,以及四元數旋轉. Orientation3D.quaternion: 四元數中的方向由三個旋轉軸(x、y、z)和一個旋轉角 (w) 肯定 q = cos(A/2)+sin(A/2)*(x*i+y*j+z*k)

Q.w = cos (angle / 2)

Q.x = axis.x * sin (angle / 2)

Q.y = axis.y * sin (angle / 2)

Q.z = axis.z * sin (angle / 2) 四元數可提供平滑差值,沒有Euler旋轉的萬向鎖。

Orientation3D.eulerAngles:歐拉旋轉,咱們最經常使用的旋轉方法應該是使用yaw, roll和pitch。yaw是在XZ軸平面上圍繞Y軸左右旋轉,當開車時使用的是yaw。pitch在YZ軸平面上圍繞X軸上下旋轉,噴氣機飛行或爬坡時用pitch向上或向下。roll是在XY軸平面上繞Z軸傾斜旋轉,從字面意思上說,當你駕駛汽車高速急轉彎時,你的汽車會出現roll運動,表現一個方向就能夠經過三個歐拉角 (α,β,γ) 來定義。

 

具體的幾何解釋參照《3D數學基礎_圖形與遊戲開發》一書,

相關文章
相關標籤/搜索