缩放变换比较好理解,就不多说了。
四、 错切变换
错切变换(skew)在数学上又称为Shear mapping(可译为“剪切变换”)或者Transvection(缩并),它是一种比较特殊的线性变换。错切变换的效果就是让所有点的_x_坐标(或者_y_坐标)保持不变,而对应的_y_坐标(或者_x_坐标)则按比例发生平移,且平移的大小和该点到_x_轴(或y轴)的垂直距离成正比。错切变换,属于等面积变换,即一个形状在错切变换的前后,其面积是相等的。
比如下图,各点的_y_坐标保持不变,但其_x_坐标则按比例发生了平移。这种情况将水平错切。
下图各点的_x_坐标保持不变,但其_y_坐标则按比例发生了平移。这种情况叫垂直错切。
假定一个点经过错切变换后得到
,对于水平错切而言,应该有如下关系:
用矩阵表示就是:
扩展到3 x 3的矩阵就是下面这样的形式:
同理,对于垂直错切,可以有:
在数学上严格的错切变换就是上面这样的。在Android中除了有上面说到的情况外,还可以同时进行水平、垂直错切,那么形式上就是:
五、 对称变换
除了上面讲到的4中基本变换外,事实上,我们还可以利用Matrix,进行对称变换。所谓对称变换,就是经过变化后的图像和原图像是关于某个对称轴是对称的。比如,某点 经过对称变换后得到
,
如果对称轴是x轴,难么,
用矩阵表示就是:
如果对称轴是y轴,那么,
用矩阵表示就是:
如果对称轴是_y = x_,如图:
那么,
很容易可以解得:
用矩阵表示就是:
同样的道理,如果对称轴是_y = -x_,那么用矩阵表示就是:
特殊地,如果对称轴是_y = kx_,如下图: