以前在線性代數中學習了矩陣,對矩陣的基本運算有一些了解,前段時間在使用GDI+的時候再次學習如何使用矩陣來變化圖像,看了之后在這里總結說明。
首先大家看看下面這個3 x 3的矩陣,這個矩陣被分割成4部分。為什么分割成4部分,在后面詳細說明。
首先給大家舉個簡單的例子:現設點P0(x0, y0)進行平移后,移到P(x,y),其中x方向的平移量為△x,y方向的平移量為△y,那么,點P(x,y)的坐標為:
x = x0 + △x
y = y0 + △y
采用矩陣表達上述如下:
上述也類似與圖像的平移,通過上述矩陣我們發現,只需要修改矩陣右上角的2個元素就可以了。
我們回頭看上述矩陣的劃分:
為了驗證上面的功能劃分,我們舉個具體的例子:現設點P0(x0 ,y0)進行平移后,移到P(x,y),其中x放大a倍,y放大b倍,
矩陣就是:,按照類似前面“平移”的方法就驗證。
圖像的旋轉稍微復雜:現設點P0(x0, y0)旋轉θ角后的對應點為P(x, y)。通過使用向量,我們得到如下:
x0 = r cosα
y0 = r sinα
x = r cos(α+θ) = x0 cosθ - y0 sinθ
y = r sin(α+θ) = x0 sinθ + y0 cosθ
于是我們得到矩陣:
如果圖像圍繞著某個點(a ,b)旋轉呢?則先要將坐標平移到該點,再進行旋轉,然后將旋轉后的圖像平移回到原來的坐標原點,在后面的篇幅中我們將詳細介紹。
Matrix學習――如何使用Matrix本篇幅我們就結合Android 中的android.graphics.Matrix來具體說明,還記得我們前面說的圖像旋轉的矩陣:
從最簡單的旋轉90度的是:
在android.graphics.Matrix中有對應旋轉的函數:
Matrix matrix = new Matrix();
matrix.setRotate(90);
Test.Log(MAXTRIX_TAG,”setRotate(90):%s” , matrix.toString());
查看運行后的矩陣的值(通過Log輸出):
與上面的公式基本完全一樣(android.graphics.Matrix采用的是浮點數,而我們采用的整數)。
有了上面的例子,相信大家就可以親自嘗試了。通過上面的例子我們也發現,我們也可以直接來初始化矩陣,比如說要旋轉30度:
前面給大家介紹了這么多,下面我們開始介紹圖像的鏡像,分為2種:水平鏡像、垂直鏡像。先介紹如何實現垂直鏡像,什么是垂直鏡像就不詳細說明。圖像的垂直鏡像變化也可以用矩陣變化的表示,設點P0(x0 ,y0 )進行鏡像后的對應點為P(x ,y ),圖像的高度為fHeight,寬度為fWidth,原圖像中的P0(x0 ,y0 )經過垂直鏡像后的坐標變為(x0 ,fHeight- y0);
x = x0
y = fHeight
主站蜘蛛池模板:
色人阁导航
|
看免费黄色大片
|
国产在线播放91
|
精品一区在线视频
|
小情侣嗯啊哦视频www
|
国产精品久久久久久久av
|
a视频在线免费观看
|
在线观看国产www
|
91快色|
欧美黄一区
|
国产一级中文字幕
|
在线 日本 制服 中文 欧美
|
免费在线观看成年人视频
|
日日碰日日操
|
第一区免费在线观看
|
欧美黄色看
|
欧美一级免费在线观看
|
久久久综合久久久
|
毛片免费视频播放
|
久久精品视频2
|
依依成人精品视频
|
久久精品一二三区白丝高潮
|
精品亚洲午夜久久久久91
|
九九热国产视频
|
日韩视频在线一区二区三区
|
久草在线最新
|
欧美一级美国一级
|
羞羞草视频
|
黄色片网站免费看
|
国产婷婷一区二区三区
|
久久草在线观看视频
|
国产精品免费视频观看
|
91久久久久久久久久久久久
|
国产色妞影院wwwxxx
|
日韩在线欧美在线
|
新久久久久久
|
欧美激情综合在线
|
国产亚洲精品久久久久久久久久
|
久国久产久精永久网页
|
精品爱爱
|
中国国语毛片免费观看视频
|