电竞比分网-中国电竞赛事及体育赛事平台

分享

矩陣運(yùn)算

 imelee 2017-06-22

 平時(shí)開發(fā)程序,免不了要對(duì)圖像做各種變換處理。有的時(shí)候變換可能比較復(fù)雜,比如平移之后又旋轉(zhuǎn),旋轉(zhuǎn)之后又平移,又縮放。

直接用公式計(jì)算,不但復(fù)雜,而且效率低下。這時(shí)可以借助變換矩陣和矩陣乘法,將多個(gè)變換合成一個(gè)。 最后只要用一個(gè)矩陣對(duì)每個(gè)點(diǎn)做一次處理就可以得到想要的結(jié)果。

 另外,矩陣乘法一般有硬件支持,比如3D 圖形加速卡,處理3D變換中的大量矩陣運(yùn)算,比普通CPU 要快上1000倍。

下面是3類基本的2D圖形變換。 

平移:

設(shè)某點(diǎn)向x方向移動(dòng) dx, y方向移動(dòng) dy ,[x,y]為變換前坐標(biāo), [X,Y]為變換后坐標(biāo)。

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

以矩陣表示:

                                1    0    0

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

                               dx  dy   1

  1    0    0

  0    1    0   即平移變換矩陣。 

  dx  dy   1 

 

 旋轉(zhuǎn)

 旋轉(zhuǎn)相比平移稍稍復(fù)雜:

 設(shè)某點(diǎn)與原點(diǎn)連線和X軸夾角為b度,以原點(diǎn)為圓心,逆時(shí)針轉(zhuǎn)過(guò)a度  , 原點(diǎn)與該點(diǎn)連線長(zhǎng)度為R, [x,y]為變換前坐標(biāo), [X,Y]為變換后坐標(biāo)。

  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  為旋轉(zhuǎn)變換矩陣。

   0       0     1 

 

 縮放

 設(shè)某點(diǎn)坐標(biāo),在x軸方向擴(kuò)大 sx倍,y軸方向擴(kuò)大 sy倍,[x,y]為變換前坐標(biāo), [X,Y]為變換后坐標(biāo)。

 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種,所有的復(fù)雜2D模型視圖變換,都可以分解成上述3個(gè)。

比如某個(gè)變換,先經(jīng)過(guò)平移,對(duì)應(yīng)平移矩陣A, 再旋轉(zhuǎn), 對(duì)應(yīng)旋轉(zhuǎn)矩陣B,再經(jīng)過(guò)縮放,對(duì)應(yīng)縮放矩陣C.

則最終變換矩陣 T = ABC. 即3個(gè)矩陣按變換先后順序依次相乘(矩陣乘法不滿足交換律,因此先后順序一定要講究)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多