Skip to content

Commit c34b0e6

Browse files
authored
Update
1 parent 0a0b701 commit c34b0e6

1 file changed

Lines changed: 18 additions & 1 deletion

File tree

CustomView/Advance/[09]Matrix_Basic.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,8 +425,25 @@ matrix.postScale(0.5f, 0.5f, pivotX, pivotY);
425425
426426
### Pre与Post的区别
427427
428-
主要区别其实就是矩阵的乘法顺序不同,pre相当于矩阵的右乘,而post相当于矩阵的左乘,在图像处理中,越靠近右边的矩阵越先执行,所以pre操作会先执行,而post操作会后执行
428+
主要区别其实就是矩阵的乘法顺序不同,pre相当于矩阵的右乘,而post相当于矩阵的左乘。
429429
430+
以下观点存在歧义,故做删除标注:
431+
432+
<s>
433+
在图像处理中,越靠近右边的矩阵越先执行,所以pre操作会先执行,而post操作会后执行。
434+
</s>
435+
436+
在实际操作中,我们每一步都会得出计算结果,但是为什么还会用存在先后的说法? 这是因为矩阵乘法规则,用一个例子说明:
437+
438+
>
439+
```java
440+
Matrix matrix = new Matrix();
441+
matrix.postScale(0.5f, 0.8f);
442+
matrix.preTranslate(1000, 1000);
443+
Log.e(TAG, "MatrixTest:3" + matrix.toShortString());
444+
```
445+
>
446+
在上面的操作中,如果按照正常的思路,先缩放,后平移,缩放操作执行在前,不会影响到后续的平移操作,但是执行结果却发现平移距离变成了(500, 800),这一结果是符合矩阵乘法的运算规律的,也就是说缩放操作影响到了平移操作,**相当于先执行了平移操作,然后执行的缩放操作,因此才有pre操作会先执行,而post操作会后执行这一说法**。
430447
431448
432449
**假设我们需要先缩放再平移,下面我们用不同对方式来构造这一个矩阵:**

0 commit comments

Comments
 (0)