From cd2d1372f08e73af232196c038b23b604eb67a21 Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Thu, 29 Jun 2017 11:35:45 +0800 Subject: [PATCH 01/15] Add files via upload --- ...276\345\235\220\346\240\207\347\263\273.png" | Bin 0 -> 48070 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 "CustomView/Advance/Res/\350\247\206\345\233\276\345\235\220\346\240\207\347\263\273.png" diff --git "a/CustomView/Advance/Res/\350\247\206\345\233\276\345\235\220\346\240\207\347\263\273.png" "b/CustomView/Advance/Res/\350\247\206\345\233\276\345\235\220\346\240\207\347\263\273.png" new file mode 100644 index 0000000000000000000000000000000000000000..aacdd868df023772efe84ede2b5091bdabee9235 GIT binary patch literal 48070 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 Date: Thu, 29 Jun 2017 11:37:40 +0800 Subject: [PATCH 02/15] Update [01]CustomViewProcess.md --- CustomView/Advance/[01]CustomViewProcess.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CustomView/Advance/[01]CustomViewProcess.md b/CustomView/Advance/[01]CustomViewProcess.md index 5166f06f..79b45682 100644 --- a/CustomView/Advance/[01]CustomViewProcess.md +++ b/CustomView/Advance/[01]CustomViewProcess.md @@ -179,7 +179,10 @@ onSizeChanged如下: PS:关于onLayout这个函数在讲解自定义ViewGroup的时候会详细讲解。 -======== +========   add by Twan +一张图看懂坐标系: + +https://github.com/twangithub/AndroidNote/blob/master/CustomView/Advance/Res/%E8%A7%86%E5%9B%BE%E5%9D%90%E6%A0%87%E7%B3%BB.png ### 5.绘制内容(onDraw) From 7b1b532fe571edeb21f14ae3f5262cbf908c8a8e Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Thu, 29 Jun 2017 11:38:55 +0800 Subject: [PATCH 03/15] Update [01]CustomViewProcess.md --- CustomView/Advance/[01]CustomViewProcess.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CustomView/Advance/[01]CustomViewProcess.md b/CustomView/Advance/[01]CustomViewProcess.md index 79b45682..6af0308b 100644 --- a/CustomView/Advance/[01]CustomViewProcess.md +++ b/CustomView/Advance/[01]CustomViewProcess.md @@ -182,7 +182,7 @@ onSizeChanged如下: ========   add by Twan 一张图看懂坐标系: -https://github.com/twangithub/AndroidNote/blob/master/CustomView/Advance/Res/%E8%A7%86%E5%9B%BE%E5%9D%90%E6%A0%87%E7%B3%BB.png +![](https://github.com/twangithub/AndroidNote/blob/master/CustomView/Advance/Res/%E8%A7%86%E5%9B%BE%E5%9D%90%E6%A0%87%E7%B3%BB.png) ### 5.绘制内容(onDraw) From e519c45cb2d8352ed44cc6bd66f99520a53f6698 Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Tue, 4 Jul 2017 11:16:43 +0800 Subject: [PATCH 04/15] Update [09]Matrix_Basic.md --- CustomView/Advance/[09]Matrix_Basic.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CustomView/Advance/[09]Matrix_Basic.md b/CustomView/Advance/[09]Matrix_Basic.md index e60d8bfe..a9b6eabe 100644 --- a/CustomView/Advance/[09]Matrix_Basic.md +++ b/CustomView/Advance/[09]Matrix_Basic.md @@ -162,7 +162,7 @@ Matrix 是一个矩阵,最根本的作用就是坐标转换,下面我们就 前乘相当于矩阵的右乘: -![](http://latex.codecogs.com/png.latex?$$ M' = M \\cdot S $$) +![](http://latex.codecogs.com/png.latex?$$M'=M\\cdotS$$) > 这表示一个矩阵与一个特殊矩阵前乘后构造出结果矩阵。 From 6c6211b684a891b2a1b1286772482fbfdf43cec9 Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Tue, 4 Jul 2017 11:17:42 +0800 Subject: [PATCH 05/15] Update [09]Matrix_Basic.md --- CustomView/Advance/[09]Matrix_Basic.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CustomView/Advance/[09]Matrix_Basic.md b/CustomView/Advance/[09]Matrix_Basic.md index a9b6eabe..1ac3fa97 100644 --- a/CustomView/Advance/[09]Matrix_Basic.md +++ b/CustomView/Advance/[09]Matrix_Basic.md @@ -170,7 +170,7 @@ Matrix 是一个矩阵,最根本的作用就是坐标转换,下面我们就 前乘相当于矩阵的左乘: -![](http://latex.codecogs.com/png.latex?$$ M' = S \\cdot M $$) +![](http://latex.codecogs.com/png.latex?$$ M' =S\\cdotM$$) > 这表示一个矩阵与一个特殊矩阵后乘后构造出结果矩阵。 From 37f8052fa2be4bbc4ecb24814851eb247e43182e Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Tue, 4 Jul 2017 11:18:06 +0800 Subject: [PATCH 06/15] Update [09]Matrix_Basic.md --- CustomView/Advance/[09]Matrix_Basic.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CustomView/Advance/[09]Matrix_Basic.md b/CustomView/Advance/[09]Matrix_Basic.md index 1ac3fa97..df8d33c2 100644 --- a/CustomView/Advance/[09]Matrix_Basic.md +++ b/CustomView/Advance/[09]Matrix_Basic.md @@ -170,7 +170,7 @@ Matrix 是一个矩阵,最根本的作用就是坐标转换,下面我们就 前乘相当于矩阵的左乘: -![](http://latex.codecogs.com/png.latex?$$ M' =S\\cdotM$$) +![](http://latex.codecogs.com/png.latex?$$M'=S\\cdotM$$) > 这表示一个矩阵与一个特殊矩阵后乘后构造出结果矩阵。 From a4be67cea77f2c9fa779860cc8126390ad7e4db5 Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Tue, 4 Jul 2017 11:26:44 +0800 Subject: [PATCH 07/15] Update [09]Matrix_Basic.md --- CustomView/Advance/[09]Matrix_Basic.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CustomView/Advance/[09]Matrix_Basic.md b/CustomView/Advance/[09]Matrix_Basic.md index df8d33c2..f6c2a42f 100644 --- a/CustomView/Advance/[09]Matrix_Basic.md +++ b/CustomView/Advance/[09]Matrix_Basic.md @@ -1,3 +1,24 @@ +#### add twan .加上自己的查的资料,便于理解,就是踩坑记录 +1.是不是随便两个矩阵都能相乘呢? +[只有第一个矩阵的列的个数等于第二个矩阵的行的个数,这样的两个矩阵才能相乘。](http://zh.wikihow.com/%E8%AE%A1%E7%AE%97%E7%9F%A9%E9%98%B5%E4%B9%98%E6%B3%95) + +2.矩阵是怎么计算结果的呢? +[结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和](http://www.ruanyifeng.com/blog/2015/09/matrix-multiplication.html) + +3.matrix.preTranslate(8.0f,7.0f);  这是什么意思呢? +pre是前乘.那么就是M' = M * T +注意T是什么呢? 在这里T是 +1.0, 0.0, 8.0 +0.0, 1.0, 7.0 +0.0, 0.0, 1.0 +大括号不知道怎么打,能懂就行.刚学的时候误以为是原始矩阵直接乘以 +8.0 +7.0 +1 +须不知大错特错 + + + 本文内容偏向理论,和 [画布操作](http://www.gcssloop.com/customview/Canvas_Convert/) 有重叠的部分,本文会让你更加深入的了解其中的原理。 本篇的主角Matrix,是一个一直在后台默默工作的劳动模范,虽然我们所有看到View背后都有着Matrix的功劳,但我们却很少见到它,本篇我们就看看它是何方神圣吧。 From c49d26de5f19916bfe98f93bf70cde0b7ebeabd3 Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Tue, 4 Jul 2017 11:27:48 +0800 Subject: [PATCH 08/15] Update [09]Matrix_Basic.md --- CustomView/Advance/[09]Matrix_Basic.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/CustomView/Advance/[09]Matrix_Basic.md b/CustomView/Advance/[09]Matrix_Basic.md index f6c2a42f..a340429f 100644 --- a/CustomView/Advance/[09]Matrix_Basic.md +++ b/CustomView/Advance/[09]Matrix_Basic.md @@ -1,22 +1,28 @@ #### add twan .加上自己的查的资料,便于理解,就是踩坑记录 -1.是不是随便两个矩阵都能相乘呢? +1.是不是随便两个矩阵都能相乘呢?
[只有第一个矩阵的列的个数等于第二个矩阵的行的个数,这样的两个矩阵才能相乘。](http://zh.wikihow.com/%E8%AE%A1%E7%AE%97%E7%9F%A9%E9%98%B5%E4%B9%98%E6%B3%95) -2.矩阵是怎么计算结果的呢? +2.矩阵是怎么计算结果的呢?
[结果矩阵第m行与第n列交叉位置的那个值,等于第一个矩阵第m行与第二个矩阵第n列,对应位置的每个值的乘积之和](http://www.ruanyifeng.com/blog/2015/09/matrix-multiplication.html) 3.matrix.preTranslate(8.0f,7.0f);  这是什么意思呢? pre是前乘.那么就是M' = M * T -注意T是什么呢? 在这里T是 +注意T是什么呢? 在这里T是 +``` 1.0, 0.0, 8.0 0.0, 1.0, 7.0 0.0, 0.0, 1.0 +``` 大括号不知道怎么打,能懂就行.刚学的时候误以为是原始矩阵直接乘以 +``` 8.0 7.0 1 +``` 须不知大错特错 +> -------------------------------------------------------------------------------- + 本文内容偏向理论,和 [画布操作](http://www.gcssloop.com/customview/Canvas_Convert/) 有重叠的部分,本文会让你更加深入的了解其中的原理。 From 2f04924c7bc94ff81a78f7276517e49803423745 Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Tue, 4 Jul 2017 11:29:50 +0800 Subject: [PATCH 09/15] Update [09]Matrix_Basic.md --- CustomView/Advance/[09]Matrix_Basic.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CustomView/Advance/[09]Matrix_Basic.md b/CustomView/Advance/[09]Matrix_Basic.md index a340429f..05f8e433 100644 --- a/CustomView/Advance/[09]Matrix_Basic.md +++ b/CustomView/Advance/[09]Matrix_Basic.md @@ -1,4 +1,5 @@ #### add twan .加上自己的查的资料,便于理解,就是踩坑记录 +> -------------------------------------------------------------------------------- 1.是不是随便两个矩阵都能相乘呢?
[只有第一个矩阵的列的个数等于第二个矩阵的行的个数,这样的两个矩阵才能相乘。](http://zh.wikihow.com/%E8%AE%A1%E7%AE%97%E7%9F%A9%E9%98%B5%E4%B9%98%E6%B3%95) From 394cb31ab5635784b2529ab4081b95438329a0a9 Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Tue, 4 Jul 2017 11:48:35 +0800 Subject: [PATCH 10/15] Update [10]Matrix_Method.md --- CustomView/Advance/[10]Matrix_Method.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/CustomView/Advance/[10]Matrix_Method.md b/CustomView/Advance/[10]Matrix_Method.md index 6d7b0a0c..d6cb434e 100644 --- a/CustomView/Advance/[10]Matrix_Method.md +++ b/CustomView/Advance/[10]Matrix_Method.md @@ -40,15 +40,7 @@ Matrix matrix = new Matrix(); 通过这种方式创建出来的并不是一个数值全部为空的矩阵,而是一个单位矩阵,如下: -![](http://latex.codecogs.com/png.latex?$$ -\\left [ -\\begin{matrix} -1 & 0 & 0 \\\\ -0 & 1 & 0 \\\\ -0 & 0 & 1 -\\end{1} -\\right ] -$$) +![](http://latex.codecogs.com/png.latex?$$\\left[\\begin{matrix}1&0&0\\\\0&1&0\\\\0&0&1\\end{1}\\right]$$) #### 有参构造 From ab7003c92f9cf0efa0163485bef5bee030804e93 Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Wed, 5 Jul 2017 11:25:33 +0800 Subject: [PATCH 11/15] Update [11]Matrix_3D_Camera.md --- CustomView/Advance/[11]Matrix_3D_Camera.md | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/CustomView/Advance/[11]Matrix_3D_Camera.md b/CustomView/Advance/[11]Matrix_3D_Camera.md index 0e4c83b6..7e483f1b 100644 --- a/CustomView/Advance/[11]Matrix_3D_Camera.md +++ b/CustomView/Advance/[11]Matrix_3D_Camera.md @@ -319,18 +319,7 @@ public class Rotate3dAnimation extends Animation { 想要解决其实也不难,只要修改两个数值就可以了,这两个数值就是在Matrix中一直被众多开发者忽略的 `MPERSP_0` 和 `MPERSP_1` -![](http://latex.codecogs.com/png.latex? -$$ -\\left [ -\\begin{matrix} -MSCALE\\_X & MSKEW\\_X & MTRANS\\_X \\\\ -\\\\ -MSKEW\\_Y & MSCALE\\_Y & MTRANS\\_Y \\\\ -\\\\ -MPERSP\\_0 & MPERSP\\_1 & MPERSP\\_2 -\\end{1} -\\right ] -$$) +![](http://latex.codecogs.com/png.latex?$$\\left[\\begin{matrix}MSCALE\\_X&MSKEW\\_X&MTRANS\\_X\\\\\\\\MSKEW\\_Y&MSCALE\\_Y&MTRANS\\_Y\\\\\\\\MPERSP\\_0&MPERSP\\_1 &MPERSP\\_2\\end{1}\\right]$$) 下面是修改后的代码(重点部分都已经标注出来了): From 0fe7c54a2c48036856eb1042da1c89adb66fb62e Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Wed, 5 Jul 2017 11:26:09 +0800 Subject: [PATCH 12/15] Update [11]Matrix_3D_Camera.md --- CustomView/Advance/[11]Matrix_3D_Camera.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CustomView/Advance/[11]Matrix_3D_Camera.md b/CustomView/Advance/[11]Matrix_3D_Camera.md index 7e483f1b..85f03034 100644 --- a/CustomView/Advance/[11]Matrix_3D_Camera.md +++ b/CustomView/Advance/[11]Matrix_3D_Camera.md @@ -319,7 +319,7 @@ public class Rotate3dAnimation extends Animation { 想要解决其实也不难,只要修改两个数值就可以了,这两个数值就是在Matrix中一直被众多开发者忽略的 `MPERSP_0` 和 `MPERSP_1` -![](http://latex.codecogs.com/png.latex?$$\\left[\\begin{matrix}MSCALE\\_X&MSKEW\\_X&MTRANS\\_X\\\\\\\\MSKEW\\_Y&MSCALE\\_Y&MTRANS\\_Y\\\\\\\\MPERSP\\_0&MPERSP\\_1 &MPERSP\\_2\\end{1}\\right]$$) +![](http://latex.codecogs.com/png.latex?$$\\left[\\begin{matrix}MSCALE\\_X&MSKEW\\_X&MTRANS\\_X\\\\\\\\MSKEW\\_Y&MSCALE\\_Y&MTRANS\\_Y\\\\\\\\MPERSP\\_0&MPERSP\\_1&MPERSP\\_2\\end{1}\\right]$$) 下面是修改后的代码(重点部分都已经标注出来了): From 4e0aa9fa9dcfca4eb459b0b43f6d6cc58420c99a Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Tue, 11 Jul 2017 12:01:59 +0800 Subject: [PATCH 13/15] Update [01]CustomViewProcess.md --- CustomView/Advance/[01]CustomViewProcess.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CustomView/Advance/[01]CustomViewProcess.md b/CustomView/Advance/[01]CustomViewProcess.md index 6af0308b..607d8dd7 100644 --- a/CustomView/Advance/[01]CustomViewProcess.md +++ b/CustomView/Advance/[01]CustomViewProcess.md @@ -178,7 +178,7 @@ onSizeChanged如下: PS:关于onLayout这个函数在讲解自定义ViewGroup的时候会详细讲解。 - +注意: 这里有一句 view坐标系的相对的. 以前以为所有的坐标点都是基于屏幕左上角 ,其实不然, 而是针对父容器的. 这点真要注意
========   add by Twan 一张图看懂坐标系: From 2e36781ca38ae863000636246ac2809000b8952d Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Tue, 11 Jul 2017 12:03:37 +0800 Subject: [PATCH 14/15] Update [01]CustomViewProcess.md --- CustomView/Advance/[01]CustomViewProcess.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CustomView/Advance/[01]CustomViewProcess.md b/CustomView/Advance/[01]CustomViewProcess.md index 607d8dd7..7f7c72bb 100644 --- a/CustomView/Advance/[01]CustomViewProcess.md +++ b/CustomView/Advance/[01]CustomViewProcess.md @@ -178,7 +178,9 @@ onSizeChanged如下: PS:关于onLayout这个函数在讲解自定义ViewGroup的时候会详细讲解。 +
注意: 这里有一句 view坐标系的相对的. 以前以为所有的坐标点都是基于屏幕左上角 ,其实不然, 而是针对父容器的. 这点真要注意
+ ========   add by Twan 一张图看懂坐标系: From 665a749a760dd0adefe6334c3d58334f0ed247fa Mon Sep 17 00:00:00 2001 From: Twan <599054904@qq.com> Date: Wed, 12 Jul 2017 15:33:01 +0800 Subject: [PATCH 15/15] Update [09]Matrix_Basic.md --- CustomView/Advance/[09]Matrix_Basic.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/CustomView/Advance/[09]Matrix_Basic.md b/CustomView/Advance/[09]Matrix_Basic.md index 05f8e433..95e41a1b 100644 --- a/CustomView/Advance/[09]Matrix_Basic.md +++ b/CustomView/Advance/[09]Matrix_Basic.md @@ -99,6 +99,23 @@ Matrix 是一个矩阵,最根本的作用就是坐标转换,下面我们就 ![](http://ww3.sinaimg.cn/large/006tKfTcly1fdz7busaiej3062020mx4.jpg) +------------------------------------- +请注意这里的: +``` +X0 +Y0 +1 +``` +实际上完整的写法是这样的: +``` +0 0  X0 +0 0  Y0 +0 0 1 +``` + + + +------------------------------------- > 你可能注意到了,我们坐标多了一个1,这是使用了齐次坐标系的缘故,在数学中我们的点和向量都是这样表示的(x, y),两者看起来一样,计算机无法区分,为此让计算机也可以区分它们,增加了一个标志位,增加之后看起来是这样:
> > (x, y, 1) - 点