Android 图形处理 —— Matrix 原理剖析

本文详细探讨了Android图形库中的Matrix类,它是一个3×3的float矩阵,用于坐标变换。Matrix的基本操作包括缩放、平移、错切和旋转,这些操作在Android图形处理中至关重要。通过矩阵乘法的原理,解释了如何利用Matrix实现这些变换。此外,还介绍了Matrix的复合操作,允许同时应用多种变换。下一篇文章将进一步讲解Matrix的API和实际应用。
摘要由CSDN通过智能技术生成

本文原始发表于:https://juejin.cn/post/7038557734517604382

Matrix 简介

Android 图形库中的 android.graphics.Matrix 是一个 3×3 的 float 矩阵,其主要作用是坐标变换

它的结构大概是这样的

matrix

其中每个位置的数值作用和其名称所代表的的含义是一一对应的

  • MSCALE_X、MSCALE_Y:控制缩放
  • MTRANS_X、MTRANS_Y:控制平移
  • MSKEW_X、MSKEW_X:控制错切
  • MSCALE_X、MSCALE_Y、MSKEW_X、MSKEW_X:控制旋转
  • MPERSP_0、MPERSP_1、MPERSP_2:控制透视

matrix_1

在 Android 中,我们直接实例化一个 Matrix,内部的矩阵长这样:

matrix_3

是一个左上到右下为 1,其余为 0 的矩阵,也叫单位矩阵,一般数学上表示为 I

Matrix 坐标变换原理

前面说到 Matirx 主要的作用就是处理坐标的变换,而坐标的基本变换有:平移、缩放、旋转和错切

这里所说的基本变换,也称仿射变换 ,透视不属于仿射变化,关于透视相关的内容不在本文的范围内

当矩阵的最后一行是 0,0,1 代表该矩阵是仿射矩阵,下文中所有的矩阵默认都是仿射矩阵

线性代数中的矩阵乘法

在正式介绍 Matrix 是如何控制坐标变换的原理之前,我们先简单复习一下线性代数中的矩阵乘法,详细的讲解可参见维基百科或者翻翻大学的《线性代数》,这里只做最简单的介绍

  • 两个矩阵相乘,前提是第一个矩阵的列数等于第二个矩阵的行数

  • 若 A 为 m × n 的矩阵,B 为 n × p 的矩阵,则他们的乘积 AB 会是一个 m × p 的矩阵,表达可以写为

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oVHNdQyD-1648174828210)(https://wikimedia.org/api/rest_v1/media/m

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值