diff --git a/CustomView/Advance/[09]Matrix_Basic.md b/CustomView/Advance/[09]Matrix_Basic.md index e430f99..45c8ffc 100644 --- a/CustomView/Advance/[09]Matrix_Basic.md +++ b/CustomView/Advance/[09]Matrix_Basic.md @@ -425,8 +425,25 @@ matrix.postScale(0.5f, 0.5f, pivotX, pivotY); ### Pre与Post的区别 -主要区别其实就是矩阵的乘法顺序不同,pre相当于矩阵的右乘,而post相当于矩阵的左乘,在图像处理中,越靠近右边的矩阵越先执行,所以pre操作会先执行,而post操作会后执行。 +主要区别其实就是矩阵的乘法顺序不同,pre相当于矩阵的右乘,而post相当于矩阵的左乘。 +以下观点存在歧义,故做删除标注: + + +在图像处理中,越靠近右边的矩阵越先执行,所以pre操作会先执行,而post操作会后执行。 + + +在实际操作中,我们每一步都会得出计算结果,但是为什么还会用存在先后的说法? 这是因为矩阵乘法规则,用一个例子说明: + +> +```java +Matrix matrix = new Matrix(); +matrix.postScale(0.5f, 0.8f); +matrix.preTranslate(1000, 1000); +Log.e(TAG, "MatrixTest:3" + matrix.toShortString()); +``` +> +在上面的操作中,如果按照正常的思路,先缩放,后平移,缩放操作执行在前,不会影响到后续的平移操作,但是执行结果却发现平移距离变成了(500, 800),这一结果是符合矩阵乘法的运算规律的,也就是说缩放操作影响到了平移操作,**相当于先执行了平移操作,然后执行的缩放操作,因此才有pre操作会先执行,而post操作会后执行这一说法**。 **假设我们需要先缩放再平移,下面我们用不同对方式来构造这一个矩阵:**