Matrix学习——如何使用Matrix

By: 海市蜃楼 | In: Android开发

19 2010

上一篇幅  Matrix学习——基础知识,从高等数学方面给大家介绍了Matrix,本篇幅我们就结合Android 中的android.graphics.Matrix来具体说明,还记得我们前面说的图像旋转的矩阵:

Rotate

从最简单的旋转90度的是:

Rotate-90-Matrix

在android.graphics.Matrix中有对应旋转的函数:
Matrix matrix = new Matrix();
matrix.setRotate(90);
Test.Log(MAXTRIX_TAG,”setRotate(90):%s” , matrix.toString());

Rotate-90-Android

查看运行后的矩阵的值(通过Log输出):

Rotate-90-Android-log

与上面的公式基本完全一样(android.graphics.Matrix采用的是浮点数,而我们采用的整数)。

有了上面的例子,相信大家就可以亲自尝试了。通过上面的例子我们也发现,我们也可以直接来初始化矩阵,比如说要旋转30度:

Rotate-30-Matrix

前面给大家介绍了这么多,下面我们开始介绍图像的镜像,分为2种:水平镜像、垂直镜像。先介绍如何实现垂直镜像,什么是垂直镜像就不详细说明。图像的垂直镜像变化也可以用矩阵变化的表示,设点P0(x0 ,y0 )进行镜像后的对应点为P(x ,y ),图像的高度为fHeight,宽度为fWidth,原图像中的P0(x0 ,y0 )经过垂直镜像后的坐标变为(x0 ,fHeight- y0);
x = x0
y = fHeight – y0
推导出相应的矩阵是:

垂直镜像-Matrix

final float f[] = {1.0F,0.0F,0.0F,0.0F,-1.0F,120.0F,0.0F,0.0F,1.0F};
Matrix matrix = new Matrix();
matrix.setValues(f);

按照上述方法运行后的结果:
垂直镜像-Android

至于水平镜像采用类似的方法,大家可以自己去试试吧。

实际上,使用下面的方式也可以实现垂直镜像:
Matrix matrix = new Matrix();
matrix.setScale (1.0,-1.0);
matrix.postTraslate(0, fHeight);

这就是我们将在后面的篇幅中详细说明。

相关文章

1 Response to Matrix学习——如何使用Matrix

Avatar

自助友情链接

四月 20th, 2010 at 10:51 上午

我的网站我做主

Comment Form

About mo-Android

这里有一群热爱开发的人,我们的文章以原创、翻译为主,包含了我们对Android的认识,对Android的研究,以及一些开发心得和感想,如果 你喜欢我们的站点,喜欢我们的文章,欢迎拍砖,欢迎交流。希望新版的mo-Android能够为你带来更好的体验。

  • sayisee: G1是享受不动了,呵呵~ PS:烦请博主到下面链接,帮忙选投上数第六个(西 [...]
  • fennek: 找了半天,在国家和地区的选项里只有香港,没有中国大陆,运营商里也只 [...]
  • 卡卡西: 1.6能向下兼容1.5的,目前没发现1.5的程序在1.6的机器上有什么问题,作者不要 [...]
  • 张凯: 把我加到群里呗,QQ:82190688 [...]
  • 张凯: 把我加到群里呗,QQ:82190688 [...]

Calendar

2010年九月
« 八    
 12345
6789101112
13141516171819
20212223242526
27282930