看这篇笔记之前先看一下参考文章,这篇笔记没有系统的讲述矩阵和代码的东西,参考文章写的也有错误的地方,要辨证的看。
比如有矩阵A和矩阵B,他们分别为:
可以看到A为2行3列的矩阵,B为3行2列的矩阵,矩阵乘法符合下面的规则:
A*B != B*A
M‘ = T*(M*R) = T*M*R = (T*M)*R
详细信息可以看这里:如何计算矩阵乘法
Android中使用3×3的矩阵进行图形的变换,它看起来大概是下面这样:
在Android中,使用一个3×1的矩阵来表示一个点:
x,y分别代表x,y轴上的坐标,而1代表屏幕在z轴上的坐标为默认的。如果将1变大,那么屏幕会拉远, 图形会变小。
图例:
图例:
图例:
图例:
图例:
图例:
应用矩阵进行图形变换的主要原因,是因为矩阵是可以通过矩阵的乘法进行组合使用的,如果想对canvas绘制的bitmap时,先平移T(dx, dy),再旋转R(θ),最后缩放S(k1,k2),就可以将三个变换矩阵相乘,M‘ = ABC,再对canvas应用M’矩阵即可。
矩阵的操作可以看作是以坐标原点为原点的坐标系在三维空间中做的变换,不同于canvas的屏幕坐标系坐标系,矩阵Matrix的坐标系为左手坐标系:
这个坐标系对应的每个轴的旋转方向(从原点看出去,每个轴的旋转方向都是逆时针):
因为Matrix变换后是对每个canvas的点起作用,其实也可以看做对这个三维坐标系起了作用,canvas绘制的是三维坐标系上的图像对canvas二位坐标系的投影。
所以,可以用自己的左手模拟进行平移旋转等操作,更加直观的想象变换后的效果。
在Android中,有关矩阵的操作都是成对的,比如preTranslate(float dx, float dy)和postTranslate(float dx, float dy),通过看api的介绍,如果原矩阵为M,那么pre表示的是左乘,post表示右乘:
preTranslate : M’ = M * T(dx, dy) // 左乘 postTranslate: M’ = T(dx, dy) * M // 右乘
因为矩阵的变换是顺序执行的,所以在平时最常用的应该是pre左乘,所有的变换操作都依次执行,比如canvas常用的translate等变换方法其实就是左乘。右乘其实就是在所有操作之前增加一步操作,合理的运用右乘可以方便代码的编写。
比如:图形变换是以左边原点为原点的,所以旋转、缩放等功能应用到canvas.drawbitmap()方法时(因为bitmap常从原点往右下方画),图像表现出来的结果就特别奇怪,需要将canvas的坐标系移动到图像的中心点再操作然后再把坐标系移回去,那么如果只用pre左乘的话,代码是这样的:
Matrix matrix = new Matrix();matrix.preTranslate(pivotX,pivotY);// 各种操作,旋转,缩放,错切等,可以执行多次。matrix.preTranslate(-pivotX, -pivotY);
如果合理使用右乘,那么代码就成了:
Matrix matrix = new Matrix();// 各种操作,旋转,缩放,错切等,可以执行多次。matrix.postTranslate(pivotX,pivotY);matrix.preTranslate(-pivotX, -pivotY);
减少了postTranslate和preTranslate之间的距离。
155028.html
本文由 贵州做网站公司 整理发布,部分图文来源于网络,如有侵权,请联系我们删除,谢谢!
SEO小店网站优化 能带来大量精准流量的网站才是好网站,小店网络公司SEO优化推广可以为企业网站带来大量的有效流量。 ...
汉寿网站排名快速提升 汉寿网络公司快速提升企业网站排名,通过网站优化推广,让汉寿企业网站在搜索引擎的排名长期稳定。 ...
SEO张家界网站优化 能带来大量精准流量的网站才是好网站,张家界网络公司SEO优化推广可以为企业网站带来大量的有效流量。 ...
宝马自行车标志是什么样子?宝马自行车标志和汽车标志相似。这是宝马制造的高端自行车。但目前在国内很少见到。宝马自行车的车架造型源于宝马汽车制造技术的车架材料处理和成型工艺,保证了车辆的整体刚性和韧性。这款自行车结合了宝马汽车的设计理念和宝马高超的材料制造加工技术,成为了一件工业艺术品。宝马自行车为什么那么便宜?宝马自行车一般不在实体店卖,大部分在网店卖。网店在销售成本上有很大优势,在价格上也比其他品...
京东路的日子歌曲歌词?歌名:《北京东路的日子》原唱:许艺豪、陆天舒、姜伟民、张、梁静媛、游、徐艺轩歌词:王元音乐:王元编曲:孙蕾歌词:当初,我们都是孩子。成为天使的最后愿望。歌谣中的歌谣隐藏着童话的影子。我的孩子应该飞向哪里?当初,我们都是孩子。成为天使的最后愿望。歌谣中的歌谣隐藏着童话的影子。我的孩子应该飞向哪里?当有一天你听到有人在说那些奇怪的语言。当有一天你看到满大街的书还是先学着找乐子当有...
淘宝店铺头像尺寸多大?淘宝店铺头像的尺寸是8080像素的。下面请附上淘宝店铺其他尺寸要求。1、店标尺寸:文件格式GIF、JPG、JPEG、PNG文件大小80K以内,建议您尺寸80PX*80PX(PX是像素)2、店铺公告尺寸:320*4003、宝贝分类尺寸:宽度168px*相同高度不限4、店铺推荐尺寸:600*4505、计数器尺寸:137*946、论坛签名尺寸:468*607、店标尺寸:文件格式GI...