Android中的Matrix類介紹

來源:互聯網
上載者:User

標籤:android   style   os   ar   使用   java   sp   strong   div   

Matrix顧名思義就是大學的線性代數中的矩陣,關於矩陣的基本知識和加減乘除運算這裡不再贅述。

Android中的Matrix類是一個比較簡單的3x3的3階矩陣,結構如下:

  1. float matrix = {MSCALE_X, MSKEW_X, MTRANS_X,  
  2.                        MSKEW_Y, MSCALE_Y, MTRANS_Y,  
  3.                        MPERSP_0, MPERSP_1, MPERSP_2  
  4.                      };  

結構如上:其中 MSCALE_X和MSCALE_Y分別是控制X軸和Y軸方向的縮放,MSKEW_X和MSKEW_Y是分別控制X座標和Y座標的線性傾斜係數,MTRANS_X和MTRANS_Y則是控制X方向和Y方向的線性平移。MPERSP_0、MPERSP_1和MPERSP_2暫時使用不多,以後補充說明。

有了上訴描述了,所謂的矩陣變換主要就是針對這個3階矩陣進行算術運算了!如平移操作從(0,0)平移到(10,120)則直接將上述矩陣的MSCALE_X=10和MSCALE_Y=120即可Matrix.setValues(matrix數組)。這樣Canvas就可以使用該矩陣進行繪圖操作,實現平移。

其中旋轉矩陣比較特殊的,其結構如下:


  1. float matrix = {cosA, -sinA, 0,  
  2.                 sinA,  cosA, 0,  
  3.                 0,     0,    1  
  4.                 };  
其中A為旋轉的角度,如需旋轉操作只需將角度傳入上述矩陣即可。

同時我們知道矩陣的乘法是不對稱的,即A*B !=B*A,這樣的話就涉及到矩陣乘法中的左乘和右乘了,同樣Android中Matrix中也實現了左乘和右乘的函數,所有postXXX均為左乘運算,所有preXXX均為右乘運算。這點在我們使用Matrix進行組合變換時需要注意的問題。

同時由於矩陣對象最後的狀態是進過所有變換後運算獲得的矩陣,所有如果你需要重新使用該矩陣又不想保留之前的狀態時,需要調用reset()重設矩陣的狀態,以免發生錯誤。同時需要注意的是Matrix類的setXXX方法都會預設調用reset()進行矩陣的重設,所以在實現組合變換時一點要注意不要在變換的中間調用setXXX方法,這樣setXXX方法之前的變換都被忽略了。

Android中的Matrix類介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.