美文网首页
理解android中出现的matrix

理解android中出现的matrix

作者: WLHere | 来源:发表于2021-08-24 19:54 被阅读0次

概览

matrix,中文名:矩阵,曾经在《线性代数》中出现过。我们应该学过矩阵乘法,知道它不满足乘法交换律,知道前乘和后乘结果不一样。

在android中也多次出现matrix,例如:

  1. ImageView的scaleType有一个matrix的值,设置缩放属性为matrix
  2. Canvas也可以设置matrix: Canvas.setMatrix,设置canvas的位移、缩放、旋转
  3. TextureView也可以设置matrix: TextureView.setTransform,设置画面的位移、缩放、旋转

matrix的运算函数有
setRotate、setScale、setTranslate
preRotate、preScale、preTranslate
postRotate、postScale、postTranslate

android中为什么使用matrix?
matrix的pre、post、set方法有什么区别?

相关概念

矩阵:是一个按照长方阵列排列的复数或实数集合
矩阵相乘:两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如Am×n矩阵和Bn×p矩阵,它们的乘积C是一个m×p矩阵 ,它的一个元素:

image.png
例如: image.png

矩阵和向量相乘:如果Am×n矩阵和Bn×1矩阵(向量n),它们的乘积C是一个m×1矩阵(向量m)

对角矩阵(identity matrix):一个n*n的矩阵,非对角线上的元素均为0

对角矩阵和向量相乘:如果对角线元素均为1,那么结果还是向量本身

image.png
顶点 构成图形的关键点,例如矩形的顶点是四个角,三角形的顶点是3个角

用向量(x, y, z)表示顶点坐标(x, y, z)

坐标变换

缩放

缩放相对容易理解,直接乘顶点坐标即可


image.png

可以看到,S1负责缩放x,S2负责缩放y, S3负责缩放z

位移

缩放也容易理解,直接乘顶点坐标即可


image.png

可以看到,T1负责x,T2负责y,T3负责z

旋转

旋转的数学逻辑比较复杂,我们跳过数据逻辑,直接看答案
绕x轴旋转


image.png

绕y轴旋转


image.png
绕z轴旋转
image.png
绕(Rx, Ry, Rz)旋转
image.png
拼接操作

通过矩阵乘法,我们可以把多个变换矩阵合并到一个矩阵,例如:先移动,再缩放


image.png

然后乘以顶点坐标,符合先位移再缩放


image.png

总结

  1. matrix可以合并多个变换为1个,相当于可以存储变换,也减少最终变换的计算量
  2. pre: 应用在所有变换之前
  3. post: 应用在所有变换之后
  4. set: 重新设置变换

相关文章

  • 理解android中出现的matrix

    概览 matrix,中文名:矩阵,曾经在《线性代数》中出现过。我们应该学过矩阵乘法,知道它不满足乘法交换律,知道前...

  • Matrix源码解析

    正文之前 这两天看了深入理解 Android 中的 Matrix和Matrix原理。这两篇文章写的都挺好的,但是我...

  • Android 图片平移、缩放后坐标的计算

    在Android中,如果你用Matrix进行过图像处理,那么一定知道Matrix这个类。Android中的Matr...

  • 深入理解 Android 中的 Matrix

    声明:本文作者授权微信公众号Android程序员(AndroidTrending)在微信公众号平台原创首发。 在 ...

  • Matrix(三) 神奇的ColorMatrix(图片的颜色与色

    之前整了两章关于Android中的Matrix操作,本章来谈一谈Android中的另一个Matrix-ColorM...

  • Android自定义控件

    Android中Canvas绘图基础详解 Android Paint、Canvas、Matrix使用讲解(一、Pa...

  • Android Matrix 的理解与应用

    图像处理中的矩阵能做什么 仿射变换 缩放 旋转 移动 翻转 错切对应Matrix类 颜色与色相修改 对比度 亮度 ...

  • Android Matrix的pre、post理解

    在图像仿射变换中,我们可以用Matrix来进行图像的平移、缩放、旋转、错切,对应Android代码中就是以下接口的...

  • Matrix及ColorMatrix

    一、Matrix Matrix简介对于一个图片变换的处理,需要Matrix类的支持,它位于"android.gra...

  • Matrix类的使用

    在Android中,对图片的处理需要使用到Matrix类,Matrix是一个3 x 3的矩阵,他对图片的处理分为四...

网友评论

      本文标题:理解android中出现的matrix

      本文链接:https://www.haomeiwen.com/subject/hppliltx.html