Android图形变换——Matrix学习

说到Android的图形变换就不得不提Matrix,包括安卓在内的很多计算机图形的变换都是基于矩阵来进行的,常规的操作如平移,旋转,缩放等操作,都是通过矩阵之间的相加,前乘、后乘来实现的。

那么首先,我们就必须知道,为什么Android中的Matrix是一个3*3的坐标系,而不是4*4或者2*2呢。我们知道,如果要实现平移变换,只需要对对象的x,y值进行操作即可

 写成矩阵的形式就是

 那么如果想要实现缩放呢

可以看到,缩放其实就是对x和y值进行了一定系数的放大,这里就引入了二维坐标系

同理,针对图形的旋转操作 

 就是对X,Y值进行了三角函数运算

那如果,想要同时实现旋转,缩放和平移怎么办,对象平移是加法,而旋转和缩放使用的是乘法。

划重点:那么有没有一种方法能同时实现旋转、缩放、平移呢?

这里,计算机图形学中采用的是升维的方法,就是把二维坐标转换为三维坐标

这样,平移操作就可以表示成:

同理,缩放和旋转:

 

 

这就是引入齐次坐标的作用把各种变换都统一了起来,即 把缩放,旋转,平移等变换都统一起来,都表示成一连串的矩阵相乘的形式。保证了形式上的线性一致性。

至于为什么在X,Y后面添加了1而矩阵不变?这就是齐次坐标系的原因了

对于Android来说,也是同样的道理。这里,还是不免俗套地祭出谷歌的经典图

这里写图片描述

 通过字面的意思我们也能大概猜测出来每个元素代表的意思,其中,这个矩阵是通过bitmap的getmatrix得到的,而且在每个手机中的数值都不同,当我想去探究这个矩阵是如何生成时,奈何底层是c实现的,我们不得而知。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值