Matrix的数学原理.docx
上传人:qw****27 上传时间:2024-09-12 格式:DOCX 页数:38 大小:1.1MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Matrix的数学原理.docx

Matrix的数学原理.docx

预览

免费试读已结束,剩余 28 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html"AndroidMatrixHYPERLINK"http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html"\l"Matrix_theory"Matrix的数学原理HYPERLINK"http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html"\l"translate"平移变换HYPERLINK"http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html"\l"rotate"旋转变换HYPERLINK"http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html"\l"scale"缩放变换HYPERLINK"http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html"\l"skew"错切变换HYPERLINK"http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html"\l"symmetrical"对称变换HYPERLINK"http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html"\l"code"代码验证Matrix的数学原理在Android中,如果你用Matrix进行过图像处理,那么一定知道Matrix这个类。Android中的Matrix是一个3x3的矩阵,其内容如下:Matrix的对图像的处理可分为四类基本变换:Translate平移变换Rotate旋转变换Scale缩放变换Skew错切变换从字面上理解,矩阵中的MSCALE用于处理缩放变换,MSKEW用于处理错切变换,MTRANS用于处理平移变换,MPERSP用于处理透视变换。实际中当然不能完全按照字面上的说法去理解Matrix。同时,在Android的文档中,未见到用Matrix进行透视变换的相关说明,所以本文也不讨论这方面的问题。针对每种变换,Android提供了pre、set和post三种操作方式。其中set用于设置Matrix中的值。pre是先乘,因为矩阵的乘法不满足交换律,因此先乘、后乘必须要严格区分。先乘相当于矩阵运算中的右乘。post是后乘,因为矩阵的乘法不满足交换律,因此先乘、后乘必须要严格区分。后乘相当于矩阵运算中的左乘。除平移变换(Translate)外,旋转变换(Rotate)、缩放变换(Scale)和错切变换(Skew)都可以围绕一个中心点来进行,如果不指定,在默认情况下是围绕(0,0)来进行相应的变换的。下面我们来看看四种变换的具体情形。由于所有的图形都是有点组成,因此我们只需要考察一个点相关变换即可。一、平移变换假定有一个点的坐标是,将其移动到,再假定在x轴和y轴方向移动的大小分别为:如下图所示:不难知道:如果用矩阵来表示的话,就可以写成:二、旋转变换2.1围绕坐标原点旋转:假定有一个点,相对坐标原点顺时针旋转后的情形,同时假定P点离坐标原点的距离为r,如下图:那么,如果用矩阵,就可以表示为:2.2围绕某个点旋转如果是围绕某个点顺时针旋转,那么可以用矩阵表示为:可以化为:很显然,1.是将坐标原点移动到点后,的新坐标。2.是将上一步变换后的,围绕新的坐标原点顺时针旋转。3.经过上一步旋转变换后,再将坐标原点移回到原来的坐标原点。所以,围绕某一点进行旋转变换,可以分成3个步骤,即首先将坐标原点移至该点,然后围绕新的坐标原点进行旋转变换,再然后将坐标原点移回到原先的坐标原点。三、缩放变换理论上而言,一个点是不存在什么缩放变换的,但考虑到所有图像都是由点组成,因此,如果图像在x轴和y轴方向分别放大k1和k2倍的话,那么图像中的所有点的x坐标和y坐标均会分别放大k1和k2倍,即用矩阵表示就是:缩放变换比较好理解,就不多说了。四、错切变换错切变换(skew)在数学上又称为Shearmapping(可译为“剪切变换”)或者Transvection(缩并),它是一种比较特殊的线性变换。错切变换的效果就是让所有点的x坐标(或者y坐标)保持不变,而对应的y坐标(或者x坐标)则按比例发生平移,且平移的大小和该点到x