zoukankan      html  css  js  c++  java
  • Android源码之Matrix

    Matrix类在Android中主要用来进行矩阵变换,其可操作的对象包括图像、点阵、Vector(向量)、矩形等。

    Matrix支持的变换类型主要有以下几种:

    1、Translate:平移变换

    2、Rotate:旋转变换

    3、Scale:缩放变换

    4、Skew:错切变换

    Matrix的主要接口也是根据这几种变换类型来分的。

    一、针对变换类型的接口。针对每一种变换类型,Matrix都提供了三种接口,即

    setXXX();

    preXXX();

    postXXX();

    其中:

    setXXX()接口用于设置该Matrix。其以前的设置值全被清空,相当于先执行了一次reset(),然后执行setXXX();

    preXXX()接口用于矩阵前乘,即M' = M * T(...);

    postXXX()接口用于矩阵后乘,即M' = T(...) * M;

    如:

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

    public void setScale(float sx, float sy);

    public boolean preScale(float sx, float sy, float px, float py);

    public boolean preScale(float sx, float sy);

    public boolean postScale(float sx, float sy, float px, float py);

    public boolean postScale(float sx, float sy);

    注:除平移变换外,其余三种变换类型的每个接口都提供了一个重载版本,其中一个是可以指定pivot点,另一个是默认0坐标点。pivot点指中心点,如旋转中心点,缩放中心点,其特点是在变换过程中,其位置保持不变。

    二、针对具体对象进行变换的接口

    1、对矩形变换

    public boolean rectStaysRect(); //判断该矩阵是否能够将一个矩形变换为另一个矩形。只有单位阵,或者只进行过平移、缩放、和N*90度旋转的矩阵才能对矩形进行变换

    public boolean setRectToRect(RectF src, RectF dst, ScaleToFit stf); //使用矩形src到dst的平移和缩放值来设置当前矩阵

    public boolean mapRect(RectF dst, RectF src); //使用当前矩阵将src映射为dst
    public boolean mapRect(RectF rect); //同mapRect(rect, rect);

    2、对点序列进行变换

    public void mapPoints(float[] dst, int dstIndex, float[] src, int srcIndex, int pointCount);

    public void mapPoints(float[] dst, float[] src);

    public void mapPoints(float[] pts);

    使用当前矩阵将src点序列映射到dst点序列。点序列的格式为x1,y1,x2,y2......

    3、对Vector向量进行变换

    public void mapVectors(float[] dst, int dstIndex, float[] src, int srcIndex, int vectorCount);
    public void mapVectors(float[] dst, float[] src);
    public void mapVectors(float[] vecs);

    使用当前矩阵对向量进行变换。

    三、矩阵操作

    public boolean invert(Matrix inverse); //判断当前矩阵是否可转置,如果是则返回true,同时将inverse设置为转置阵
    public void getValues(float[] values); //取得当前矩阵的float序列
    public void setValues(float[] values); //将float序列值转化为当前矩阵的值。

    关于Matrix转置类型的介绍以及Matrix矩阵的格式的介绍请参考:

    http://zensheno.blog.51cto.com/2712776/513652

    http://blog.csdn.net/pathuang68/article/details/6991867

    测试代码下载:http://download.csdn.net/detail/lxgwm2008/5234463

  • 相关阅读:
    评审管理小结
    安全性测试入门 (五):Insecure CAPTCHA 验证码绕过
    安全性测试入门 (四):Session Hijacking 用户会话劫持的攻击和防御
    安全性测试入门 (三):CSRF 跨站请求伪造攻击和防御
    测试管理:问题驱动的测试过程改进
    逻辑思维驱动 (测试) 工作管理
    测试管理:用量化的思想管理工作
    软件质量报告模板-产品质量度量
    一篇短文再谈“敏捷”
    Windows XP系列全下载(均为MSDN原版)
  • 原文地址:https://www.cnblogs.com/xiaorenwu702/p/5158522.html
Copyright © 2011-2022 走看看