android Matrix

Matrix是一个矩阵,主要功能是坐标映射,数值转换。

它看起来大概是下面这样:

这里写图片描述

Matrix基本原理

Matrix 是一个矩阵,最根本的作用就是坐标转换,基本变换有4种:

  • 平移(Translate)
  • 缩放(Scale)
  • 旋转(Rotate)
  • 错切(Skew)
    这里写图片描述

方法详解

无参构造

Matrix matrix = new Matrix();

通过这种方法构造出来一个单位矩阵:
这里写图片描述

有参构造

这种方法则需要一个已经存在的矩阵作为参数,使用格式如下:

Matrix matrix = new Matrix(src);

基本方法

1.equals

比较两个矩阵是否相等

2.hasCode

获取Matrix的哈希值

3.toString

将Matrix转换为字符串: Matrix{[1.0, 0.0, 0.0][0.0, 1.0, 0.0][0.0, 0.0, 1.0]}

4.toShortString

将Matrix转换为短字符串: [1.0, 0.0, 0.0][0.0, 1.0, 0.0][0.0, 0.0, 1.0]

数值操作

1.set

void set (Matrix src)

没有返回值,有一个参数,作用是将参数Matrix的数值复制到当前Matrix中。如果参数为空,则重置当前Matrix,相当于reset()。

2.reset

void reset();

重置当前Matrix(将当前Matrix重置为单位矩阵)。

3.setValues

void setValues (float[] values)

setValues的参数是浮点型的一维数组,长度需要大于9,拷贝数组中的前9位数值赋值给当前Matrix。

4.getValues

void getValues (float[] values)

getValues和setValues是一对方法,参数也是浮点型的一维数组,长度需要大于9,将Matrix中的数值拷贝进参数的前9位中。

矩阵相关

这里写图片描述

invert
求矩阵的逆矩阵,简而言之就是计算与之前相反的矩阵,如果之前是平移200px,则求的矩阵为反向平移200px,如果之前是缩小到0.5f,则结果是放大到2倍。

SetConcat

boolean setConcat(Matrix a,Matrix b)
boolean postConcat(Matrix other) 
boolean preConcat(Matrix other)

Matrix类还提供了直接矩阵计算方式。Matrix a=new Matrix()相当于创建一个单位矩阵。

  • a.set(b),就是赋值a = b;
  • a.preConCat(b),相当于前乘,即 a=a×b;
  • a.postConCat(b),相当于前乘,即 a=b×a;
  • c.setConcat(a,b),相当于c=a×b;

基础操作

1.setTranslate

void setTranslate(float dx, float dy)

设置平移效果,参数分别是x,y上的平移量。

2.setScale

void setScale(float sx, float sy, float px, float py)
void setScale(float sx, float sy)

两个方法都是设置缩放到matrix中,sx,sy代表了缩放的倍数,px,py代表缩放的中心。

3.setRotate

void setRotate(float degrees, float px, float py)
void setRotate(float degrees)

degrees代表旋转的角度,px,py代表旋转的中心

4.setSkew

void setSkew(float kx, float ky, float px, float py)
void setSkew(float kx, float ky)

错切,这里kx,ky分别代表了x,y上的错切因子,px,py代表了错切的中心。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值