Matrix学习.docVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Matrix学习,matrix,nmatrix,webmatrix,matrix67,thematrix,androidmatrix,labelmatrix,transformmatrix,matrix离合器

Matrix学习——基础知识 By: 海市蜃楼 | In: Android开发 14 四 2010 以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,前段时间在使用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 sia(α-θ) = -x0 sinθ+y0 cosθ 于是我们得到矩阵: 如果图像围绕着某个点(a ,b)旋转呢?则先要将坐标平移到该点,再进行旋转,然后将旋转后的图像平移回到原来的坐标原点,在后面的篇幅中我们将详细介绍。 Matrix学习——如何使用Matrix By: 海市蜃楼 | In: Android开发 19 四 2010 上一篇幅? 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 – 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); 这就是我们将在后面的篇幅中详细说明。 Matrix学习——图像的复合变化 By: 海市蜃楼 | In: Android开发 21 四 2010 Matrix学习——基础知识篇幅中,我们留下一个话题:如果图像围绕着某个点P(a,b)旋转,则先要将坐标系平移到该点,再进行旋转,然后将旋转后的图像平移回到原来的坐标原点。 我们需要3步: 平移——将坐标系平移到点P(a,b); 旋转——以原点为中心旋转图像; 平移——将旋转后的图像平移回到原来的坐标原点; 相比较前面说的图像的几何变化(基本的图像几何变化),这里需要平移——旋转——平移,这种需要多种图像的几何变化就叫做图像的复合变化。 设对给定的图像依次进行了基本变化F1、F2、F3…..、Fn,它们的变化矩阵分别为T1、T2、T3…..、Tn,图像复合变化的矩阵T可以表

文档评论(0)

zhiminwei + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档