Matrix学习——基础知识

By: 海市蜃楼 | In: Android开发

14 2010

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

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

3 x 3

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

x = x0  + △x
y = y0  + △y

采用矩阵表达上述如下:
Translate

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

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

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

矩阵就是:Scale,按照类似前面“平移”的方法就验证。

图像的旋转稍微复杂:现设点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θ

于是我们得到矩阵:Rotate

如果图像围绕着某个点(a ,b)旋转呢?则先要将坐标平移到该点,再进行旋转,然后将旋转后的图像平移回到原来的坐标原点,在后面的篇幅中我们将详细介绍。

随机日志

3 Responses to Matrix学习——基础知识

Avatar

shguo

四月 14th, 2010 at 7:24 下午

niu

Avatar

音速工作室Android开发中心 » Blog Archive » Matrix学习——图像的复合变化

八月 5th, 2010 at 6:04 下午

[...] Matrix学习——基础知识篇幅中,我们留下一个话题:如果图像围绕着某个点P(a,b)旋转,则先要将坐标系平移到该点,再进行旋转,然后将旋转后的图像平移回到原来的坐标原点。 [...]

Avatar

张凯

八月 31st, 2010 at 11:16 上午

把我加到群里呗,QQ:82190688

Comment Form

About mo-Android

这里有一群热爱开发的人,我们的文章以原创、翻译为主,包含了我们对Android的认识,对Android的研究,以及一些开发心得和感想,如果 你喜欢我们的站点,喜欢我们的文章,欢迎拍砖,欢迎交流。希望新版的mo-Android能够为你带来更好的体验。

  • sayisee: G1是享受不动了,呵呵~ PS:烦请博主到下面链接,帮忙选投上数第六个(西 [...]
  • fennek: 找了半天,在国家和地区的选项里只有香港,没有中国大陆,运营商里也只 [...]
  • 卡卡西: 1.6能向下兼容1.5的,目前没发现1.5的程序在1.6的机器上有什么问题,作者不要 [...]
  • 张凯: 把我加到群里呗,QQ:82190688 [...]
  • 张凯: 把我加到群里呗,QQ:82190688 [...]

Calendar

2010年九月
« 八    
 12345
6789101112
13141516171819
20212223242526
27282930