sloop
sloop
## 这个在Matrix原理一文中有解释。 ### 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)。 >...
矩阵计算,每一步都会计算出确定的结果,执行顺序就是按照你程序的顺序,只不过有的是左乘,有的是右乘,用矩阵乘法规则推算一下就明白了。
> 计算顺序是没有问题的,先计算的缩放,然后计算的平移,而缩放影响到平移则是因为前一步缩放后的结果矩阵右乘了平移矩阵
理论上是这样的,但是要注意计算顺序,计算顺序依旧是按照代码书写顺序进行计算的。
``` java Matrix matrix = new Matrix(); matrix.postScale(0.5f, 0.5f); Log.i("Matrix", matrix.toShortString()); matrix.preTranslate(-pivotX, -pivotY); Log.i("Matrix", matrix.toShortString()); matrix.postTranslate(pivotX, pivotY); Log.i("Matrix", matrix.toShortString()); ``` 上面这段代码的含义是按照某个点(pivotX, pivotY)的位置进行缩放。 执行结果如下: ``` Matrix: [0.5, 0.0, 0.0][0.0, 0.5, 0.0][0.0,...
差不多 ╮ ( ̄ 3 ̄) ╭
http://www.gcssloop.com/customview/Matrix_Basic
1. pre 2. 以最终效果为准. 实战中理解不清楚的话就两种都试一下,看哪个是自己最终需要的视觉效果.
就是矩阵的乘法而已。对应左乘和右乘。
因为没有更新完啊