This commit is contained in:
sloop
2016-07-21 04:09:29 +08:00
committed by GitHub
parent 0bf4fdbdf9
commit eb0d57779a

View File

@@ -9,13 +9,14 @@
如题,本篇的主角是 Matrix。
它在我们在之前的很多文章中都提及过但并没有仔细的介绍过从本篇开始终于要正式介绍它了这个在2D和3D绘图中十分重要的角色Matrix(Android中有两个Matrix分别属于OpenGL 和 graphics 本篇主要讲述的是graphics中的Matrix)
它在我们在之前的很多文章中都提及过但并没有仔细的介绍过从本篇开始终于要正式介绍它了这个在2D和3D绘图中十分重要的角色Matrix(Android中有两个Matrix分别属于OpenGL 和 graphics 本篇主要讲述的是graphics中的Matrix)
另外,本篇的重点不在于这些方法的讲解,而是帮助大家理解 Matrix 的一些基本概念。
>
### Matrix 的翻译过来是矩阵模型。和其释义相同Matrix是一个矩阵其作用则是一个模型一个控制视图状态的模型。
也就是说, 我们进行界面视图等转换都是需要依靠 Matrix 的帮助的,例如我们之前在 [Canvas之画布操作](https://github.com/GcsSloop/AndroidNote/blob/master/CustomView/Advance/%5B3%5DCanvas_Convert.md) 中讲解过的画布操作,这些操作的核心就是改变 Matrix 的数值。
也就是说, 我们进行界面视图等转换都是需要依靠 Matrix 的帮助的,例如我们之前在 [Canvas之画布操作](https://github.com/GcsSloop/AndroidNote/blob/master/CustomView/Advance/%5B3%5DCanvas_Convert.md) 中讲解过的画布操作,这些操作的核心就是改变 Matrix 的数值我们常见的可以用到Matrix的地方就是 canvas、 path、 bitmap 和 camera 等地方对于我们Android程序员来说只要是图形化界面展示就有Matrix在后台默默工作
## Matrix基本原理
@@ -34,10 +35,11 @@ MPERSP\\_0 & MPERSP\\_1 & MPERSP\\_2
\\right ]
$$)
**数值作用的介绍:**
>
根据名称我们就能猜到其大概作用,但有一些数值比较奇怪,需要细心考证
根据名称我们就能猜到其大概作用,但有些效果是需要多个参数组合控制的,如下
序号 | 名称 | 对应单词 | 摘要
-----|----------|-------------|--------------
@@ -59,6 +61,20 @@ $$)
>
**从上图可以看到最后三个参数是控制透视的这三个参数主要在3D效果中运用通常为(0, 0, 1),不在本篇范围内,暂不过多叙述,会在之后对文章中详述其作用。**
## Matrix常见误解
在写本文之前,我翻阅很多介绍 Matrix 的文章和官方文档但其中文的搜索结果令我很悲伤大部分的中文章对Matrix都存在误解,想当然的创造出一些错误的理论, 导致很多(抄袭)的文章都是这一错误的理论,不知道要坑害多少小白,常见的错误理论有:
* 1.认为Matrix最下面的一行的三个参数(MPERSP_0、MPERSP_1、MPERSP_2)没有什么太大的作用,在这里只是为了凑数。
> 实际上最后一行参数在3D变换中有着至关重要的作用这一点会在后面中Camera一文中详细介绍。
* 2.最后一个参数MPERSP_2被解释为scale
> 的确更改MPERSP_2的值能够达到类似缩放的效果但这是因为齐次坐标的缘故并非这个参数的实际功能。
@@ -66,7 +82,7 @@ $$)
## Matrix方法表
Matrix 有很多常用和不常用的方法,在本篇中重点不在于这些方法的讲解,而是帮助大家理解 Matrix 的一些基本概念。
Matrix 有很多常用和不常用的方法,
方法类别 | 相关API | 摘要
-----------|---------------------------------------------------------|------------------------