Android Matrix 学习
来源:互联网 发布:淘宝cpu散片 编辑:程序博客网 时间:2024/05/18 02:46
以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,前段时间在使用 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 个元素就可以了。
Matrix学习 —如何使用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());
与上面的公式基本完全一样(android.graphics.Matrix采用的是浮点数,而我们采用的整数)。
有了上面的例子,相信大家就可以亲自尝试了。通过上面的例子我们也发现,我们也可以直接来初始化矩阵,比如说要旋转30 度:
前面给大家介绍了这么多,下面我们开始介绍图像的镜像,分为 2 种:水平镜像、垂直镜像。先介绍如何实现垂直镜像,什么是垂直镜像就不详细说明。图像的垂直镜像变化也可以用矩阵变化的表示,设点 P0(x0 ,y0 )进行镜像后的对应点为 P(x ,y ),图像的高度为 fHeight,宽度为 fWidth,原图像中的 P0(x0 ,y0 )经过垂直镜像后的坐标变为(x0 ,fHeight y0);
推导出相应的矩阵是:
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);按照上述方法运行后的结果:
至于水平镜像采用类似的方法,大家可以自己去试试吧。 实际上,使用下面的方式也可以实现垂直镜像:
Matrix matrix = new Matrix(); matrix.setScale (1.0,1.0); matrix.postTraslate(0, fHeight);
- Android Matrix 学习
- Android—Matrix学习
- 我学习的android Matrix
- Android中Matrix的学习
- Android graphics学习笔记(5) - Matrix
- android 学习之动画 -- 认识 Matrix
- Android之Matrix学习(一)
- Matrix学习
- Matrix学习
- Matrix学习
- Matrix学习
- Matrix学习
- Matrix学习
- Matrix学习
- android matrix
- Android Matrix
- Android Matrix
- Android Matrix
- 第三讲:Android模拟器的使用
- 使用CSplitterWnd实现拆分窗口(多视图显示)
- 深入浅出PowerShell——部署SharePoint解决方案包
- 《学习opencv》第四章课后习题3
- 数据库集群的分类和各大商业数据库上的应用
- Android Matrix 学习
- ORA-16038 日志 无法归档 问题解决
- JAVA的MD5加密与解密
- C++的不足之处讨论系列(一)
- Filter过滤器只过滤jsp不过滤action请求的解决方案
- java异常笔记本
- Linux解压命令
- 《学习opencv》第四章课后习题4
- 数据采集的烦恼