參考: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之間,爲兩個向量的夾角餘弦值
二、叉乘:叉乘結果爲垂直於兩個叉乘向量所肯定平面的向量不知足交換律