pre : M‘ = MA M在前
post : M’ = AM M在后
可以理解为靠右的矩阵操作会先执行(么有为什么,矩阵乘法算出来就是这个结果),比如要实现先缩放,再平移,那么要让缩放矩阵在M矩阵之前,平移矩阵在M矩阵之后,那么实现方式有以下几种:
//pre
Matrix m = new Matrix();
m.reset();
m.preTranslate(tx, ty);
m.preScale(sx, sy);
//post
Matrix m = new Matrix();
m.reset();
m.postScale(sx, sy);
m.postTranslate(tx, ty);
//先post,再pre
Matrix m = new Matrix();
m.reset();
m.preScale(sx, sy);
m.postTranslate(tx, ty);
//先pre,再post
Matrix m = new Matrix();
m.reset();
m.preTranslate(tx, ty);
m.postScale(sx, sy);
//先post,再pre,因为只有两步,所以交换不影响结果
Matrix m = new Matrix();
m.reset();
m.postTranslate(tx, ty);
m.preScale(sx, sy);
平时写代码,如果涉及到组合,一般可以用post按顺序写,都用post,比较好理解。
refer:https://juejin.im/entry/6844903646946295816
网友评论