遊戲開發基礎知識之圖形變換:矩陣變換

參考:http://blog.csdn.net/leaf6094189/article/details/18554549spa

 

1、平移.net

3類基本的2D圖形變換。 blog

平移:get

設某點向x方向移動 dx, y方向移動 dy ,[x,y]爲變換前座標, [X,Y]爲變換後坐標。移動

則 X = x+dx;  Y = y+dy;co

以矩陣表示:模型

                                1    0    0tar

[X, Y, 1] = [x, y, 1][ 0    1    0  ] ; 

                               dx  dy   1

  1    0    0

  0    1    0   即平移變換矩陣。 

  dx  dy   1 

 

2、旋轉

 

旋轉:

 

 旋轉相比平移稍稍複雜:

 

 設某點與原點連線和X軸夾角爲b度,以原點爲圓心,逆時針轉過a度  , 原點與該點連線長度爲R, [x,y]爲變換前座標, [X,Y]爲變換後坐標。

 

  x = Rcos(b) ; y = Rsin(b);

 

  X = Rcos(a+b) = Rcosacosb - Rsinasinb = xcosa - ysina; (合角公式)

 

  Y = Rsin(a+b) = Rsinacosb + Rcosasinb = xsina + ycosa ;

 

 

 

  用矩陣表示:

 

                                cosa   sina  0

 

 [X, Y, 1] = [x, y, 1][-sina  cosa  0  ] 

 

                                 0        0     1

 

  cosa   sina  0

 

 -sina  cosa  0  爲旋轉變換矩陣。

 

   0       0     1 

 

3、縮放

 

縮放

 

 設某點座標,在x軸方向擴大 sx倍,y軸方向擴大 sy倍,[x,y]爲變換前座標, [X,Y]爲變換後坐標。

 

 X = sx*x; Y = sy*y;

 

則用矩陣表示:

 

                                sx    0    0

 

[X, Y, 1] = [x, y, 1][ 0    sy    0  ] ; 

 

                                0     0     1

 

 sx    0    0

 

 0    sy    0  即爲縮放矩陣。 

 

 0     0     1

 

 

小結

 

2D基本的模型視圖變換,就只有上面這3種,全部的複雜2D模型視圖變換,均可以分解成上述3個。

 

好比某個變換,先通過平移,對應平移矩陣A, 再旋轉, 對應旋轉矩陣B,再通過縮放,對應縮放矩陣C.

 

則最終變換矩陣 T = ABC. 即3個矩陣按變換前後順序依次相乘(矩陣乘法不知足交換律,所以前後順序必定要講究)。

 

 

 

 

雜項

一、點乘:向量點乘結果爲標量,點乘的兩個向量必須爲單位向量,結果值爲 -1.0到 1.0之間,爲兩個向量的夾角餘弦值

二、叉乘:叉乘結果爲垂直於兩個叉乘向量所肯定平面的向量不知足交換律

相關文章
相關標籤/搜索