From afced6b7aad3316a3e2e4a2c7dbce0fa5ee73fe7 Mon Sep 17 00:00:00 2001 From: sloop Date: Tue, 2 Aug 2016 21:40:27 +0800 Subject: [PATCH] Update --- CustomView/Advance/[09]Matrix_Basic.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CustomView/Advance/[09]Matrix_Basic.md b/CustomView/Advance/[09]Matrix_Basic.md index 12cbd2f..369fa2b 100644 --- a/CustomView/Advance/[09]Matrix_Basic.md +++ b/CustomView/Advance/[09]Matrix_Basic.md @@ -433,7 +433,7 @@ matrix.postScale(0.5f, 0.5f, pivotX, pivotY); 在图像处理中,越靠近右边的矩阵越先执行,所以pre操作会先执行,而post操作会后执行。 -在实际操作中,我们每一步操作都会得出计算结果,但是为什么还会用存在先后的说法? 这是因为矩阵乘法规则,用一个例子说明: +在实际操作中,我们每一步操作都会得出准确的计算结果,但是为什么还会用存在先后的说法? 难道真的能够用pre和post影响计算顺序? 这是因为矩阵乘法规则,用一个例子说明: > ```java @@ -443,7 +443,9 @@ matrix.preTranslate(1000, 1000); Log.e(TAG, "MatrixTest:3" + matrix.toShortString()); ``` > -在上面的操作中,如果按照正常的思路,先缩放,后平移,缩放操作执行在前,不会影响到后续的平移操作,但是执行结果却发现平移距离变成了(500, 800),这一结果是符合矩阵乘法的运算规律的,也就是说缩放操作影响到了平移操作,**相当于先执行了平移操作,然后执行的缩放操作,因此才有pre操作会先执行,而post操作会后执行这一说法**。 +在上面的操作中,如果按照正常的思路,先缩放,后平移,缩放操作执行在前,不会影响到后续的平移操作,但是执行结果却发现平移距离变成了(500, 800)。 + +> 在上面例子中,计算顺序是没有问题的,先计算的缩放,然后计算的平移,而缩放影响到平移则是因为前一步缩放后的结果矩阵右乘了平移矩阵,这是符合矩阵乘法的运算规律的,也就是说缩放操作虽然在前却影响到了平移操作,**相当于先执行了平移操作,然后执行的缩放操作,因此才有pre操作会先执行,而post操作会后执行这一说法**。 **假设我们需要先缩放再平移,下面我们用不同对方式来构造这一个矩阵:**