matrix呼叫一系列set,pre,post方法時,可視為將這些方法插入到乙個佇列.當然,按照佇列中從頭至尾的順序呼叫執行.
其中pre表示在隊頭插入乙個方法,post表示在隊尾插入乙個方法.而set表示把當前佇列清空,並且總是位於佇列的最中間位置.當執行了一次set後:pre方法總是插入到set前部的佇列的最前面,post方法總是插入到set後部的佇列的最後面
例一:matrix m = new matrix();
m.setrotate(45);
m.settranslate(80, 80);
只有m.settranslate(80, 80)有效,因為m.setrotate(45);被清除.
例子二:
matrix m = new matrix();
m.settranslate(80, 80);
m.postrotate(45);
先執行m.settranslate(80, 80);後執行m.postrotate(45);
例子三:
matrix m = new matrix();
m.settranslate(80, 80);
m.prerotate(45);
先執行m.settranslate(80, 80);後執行m.prerotate(45);
例子四:
matrix m = new matrix();
m.prescale(2f,2f);
m.pretranslate(50f, 20f);
m.postscale(0.2f, 0.5f);
m.posttranslate(20f, 20f);
執行順序:m.pretranslate(50f, 20f)-->m.prescale(2f,2f)-->m.postscale(0.2f, 0.5f)-->m.posttranslate(20f, 20f)
注意:m.pretranslate(50f, 20f)比m.prescale(2f,2f)先執行,因為它查到了佇列的最前端.
例子五:
matrix m = new matrix();
m.posttranslate(20, 20);
m.prescale(0.2f, 0.5f);
m.setscale(0.8f, 0.8f);
m.postscale(3f, 3f);
m.pretranslate(0.5f, 0.5f);
執行順序:m.pretranslate(0.5f, 0.5f)-->m.setscale(0.8f, 0.8f)-->m.postscale(3f, 3f)
注意:m.setscale(0.8f, 0.8f)清除了前面的m.posttranslate(20, 20)和m.prescale(0.2f, 0.5f);
Matrix詳解 Matrix怎麼用
在剛才的viewpager練習中,用到了matrix,在這裡再整理一下它的具體用法 1 translate 平移變換 2 scale 縮放變換 3 rotate 旋轉變換 4 skew 錯切變換 在android的api裡對於每一種變換都提供了三種操作方式 set 用於設定matrix中的值 pos...
Matrix使用的分析
在android中,可以使用matrix進行相關的影象處理 如 平移 旋轉 縮放 錯切 對稱等 就拿平移來說吧 1 一般我們要想平移乙個影象,那麼我們先會建立乙個matrix matrix matrix new matrix 2 然後呼叫matrix的平移方法進行平移 matrix.posttran...
matrix 解題報告
我們都知道矩陣乘法 給定兩個矩陣a和b,若a是n r的矩陣,b是r m的矩陣,則a b的結果c是乙個n m的矩陣,且c i,j a i,k b k,j 其中1 k r。很顯然,求出每個c i,j 的過程中,我們都做了r次標量乘法。因此,總的標量乘法次數是n m r。矩陣乘法滿足結合律。換句話說,即使...