Android学习札记16:Matrix的一些基础

以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,前段时间在使用GDI+的时候再次学习如何使用矩阵来变化图像,看了之后在这里总结说明。


首先大家看看下面这个3 x 3的矩阵,这个矩阵被分割成4部分。为什么分割成4部分,在后面详细说明。

Android学习札记16:Matrix的一些基础


首先给大家举个简单的例子:现设点P0(x0, y0)进行平移后,移到P(x,y),其中x方向的平移量为△x,y方向的平移量为△y,那么,点P(x,y)的坐标为:


x = x0 + △x

y = y0 + △y


采用矩阵表达上述如下:

Android学习札记16:Matrix的一些基础


上述也类似与图像的平移,通过上述矩阵我们发现,只需要修改矩阵右上角的2个元素就可以了。


我们回头看上述矩阵的划分:

Android学习札记16:Matrix的一些基础


为了验证上面的功能划分,我们举个具体的例子:现设点P0(x0 ,y0)进行平移后,移到P(x,y),其中x放大a倍,y放大b倍,


矩阵就是:Android学习札记16:Matrix的一些基础,按照类似前面“平移”的方法就验证。


图像的旋转稍微复杂:现设点P0(x0, y0)旋转θ角后的对有点为P(x, y)。通过使用向量,我们得到如下:

x0 = r cosα

y0 = r sinα


x = r cos(α-θ) = x0 cosθ+ y0 sinθ

y = r sia(α-θ) = -x0 sinθ+y0 cosθ


于是我们得到矩阵:

Android学习札记16:Matrix的一些基础


如果图像围绕着某个点(a ,b)旋转呢?则先要将坐标平移到该点,再进行旋转,然后将旋转后的图像平移回到原来的坐标原点。



参考资料:

http://www.moandroid.com/?p=1771