android Matrix的pre、post、set三种变形方式

在Matrix中,pre、post、set都有对应的Rotate、Scale、Translate、Skew函数,每个函数的效果都可以看成是一个3x3矩阵与matrix的乘积。对于同样的函数f()的pre、post、set

形式,该函数f()可用同一个矩阵A表示,则pref()所做的工作就是matrix=matrix*A,postf()所做的工作就是matrix=A*matrix,setf()所做的工作就matrix=matrix.rest();matrix=matrx*A

现在来分析这三种方式的区别

当matrix为标准矩阵时,这三种方式是没有区别的,因为标准矩阵与任何矩阵的乘积都等于该矩阵(不管是左乘还是右乘)

matrix改变图像的实质就是作用于图像上一个个的像素点,现在假设有矩阵A、B、C作用于点(x,y),表示为A*B*C*,其效果为先对点(x,y)进行C变换再进行B变换最后进行A变换。下面用实例来分析pre,post,set的区别

        matrix.postScale(2,3,4,5);
        matrix.preTranslate(4,5);
注意以上代码,虽然postScale(2,3,4,5)是写在前面的,但是先执行的却是translate(4,5),为什么会这样呢?假设postScale(2,3,4,5)用矩阵A表示,preTransLate(4,5)用矩阵B表示,则行以上两条语句后最后生成的矩阵为A*matrix*B,根据前面所讲的理论,其效果为先对点进行B变换再进行matrix(原)变换最后进行A变换

        matrix.postScale(2,3,4,5);
        matrix.preTranslate(4,5);
        matrix.setRotate(30);
        matrix.preScale(2,3);
注意set以前对matrix的作用都是无效的,因为在执行matrix.setf()时执行了matrix.reset(),所以以上代码的执行效果为:scale(2,3)——>rotate(30)




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值