日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

矩阵运算——平移,旋转,缩放

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 矩阵运算——平移,旋转,缩放 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

平時開發程序,免不了要對圖像做各種變換處理。有的時候變換可能比較復雜,比如平移之后又旋轉,旋轉之后又平移,又縮放。

直接用公式計算,不但復雜,而且效率低下。這時可以借助變換矩陣和矩陣乘法,將多個變換合成一個。?最后只要用一個矩陣對每個點做一次處理就可以得到想要的結果。

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

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

平移:

設某點向x方向移動?dx,?y方向移動?dy?,[x,y]為變換前坐標,?[X,Y]為變換后坐標。

則?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?

?

?旋轉

?旋轉相比平移稍稍復雜:

?設某點與原點連線和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?

?

?縮放

?設某點坐標,在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個矩陣按變換先后順序依次相乘(矩陣乘法不滿足交換律,因此先后順序一定要講究)。

總結

以上是生活随笔為你收集整理的矩阵运算——平移,旋转,缩放的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。