您的位置 首页 解答

Android中的Matrix类介绍

Matrix顾名思义就是大学的线性代数中的矩阵,关于矩阵的基本知识和加减乘除运算这里不再赘述。Android中的Matrix类是一个比较简单的3×3的3阶矩阵,结构

Matrix望文生义便是大学的线性代数中的矩阵,关于矩阵的基本知识和加减乘除运算这儿不再赘述。

Android中的Matrix类是一个比较简单的3×3的3阶矩阵,结构如下:

float matrix = {MSCALE_X, MSKEW_X, MTRANS_X, MSKEW_Y, MSCALE_Y, MTRANS_Y,

MPERSP_0, MPERSP_1, MPERSP_2 };

结构如上:其间 MSCALE_X和MSCALE_Y别离是操控X轴和Y轴方向的缩放,MSKEW_X和MSKEW_Y是别离操控X坐标和Y坐标的线性歪斜系数,MTRANS_X和MTRANS_Y则是操控X方向和Y方向的线性平移。MPERSP_0、MPERSP_1和MPERSP_2暂时运用不多,今后弥补阐明。

有了上诉描绘了,所谓的矩阵改换首要便是针对这个3阶矩阵进行算术运算了!如平移操作从(0,0)平移到(10,120)则直接将上述矩阵的MSCALE_X=10和MSCALE_Y=120即可Matrix.setValues(matrix数组)。这样Canvas就可以运用该矩阵进行绘图操作,完成平移。

其间旋转矩阵比较特别的,其结构如下:

float matrix = {cosA, -sinA, 0, sinA, cosA, 0,

0, 0, 1 }; 其间A为旋转的视点,如需旋转操作只需将视点传入上述矩阵即可。

一起咱们知道矩阵的乘法是不对称的,即A*B !=B*A,这样的话就涉及到矩阵乘法中的左乘和右乘了,相同Android中Matrix中也完成了左乘和右乘的函数,一切postXXX均为左乘运算,一切preXXX均为右乘运算。这点在咱们运用Matrix进行组合改换时需求留意的问题。

一起因为矩阵目标最终的状况是进过一切改换后运算取得的矩阵,一切假如你需求从头运用该矩阵又不想保存之前的状况时,需求调用reset()重置矩阵的状况,避免产生过错。一起需求留意的是Matrix类的setXXX办法都会默许调用reset()进行矩阵的重置,所以在完成组合改换时一点要留意不要在改换的中心调用setXXX办法,这样setXXX办法之前的改换都被忽略了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/jieda/300361.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部