首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

变换矩阵 Matrix详解

2012-12-26 
转换矩阵 Matrix详解做UI少不了图形处理,转换矩阵是图形学里的基础,flash中更是常用,Matrix 类表示一个转

转换矩阵 Matrix详解

做UI少不了图形处理,转换矩阵是图形学里的基础,flash中更是常用,
Matrix 类表示一个转换矩阵,它确定如何将点从一个坐标空间映射到另一个坐标空间.
先来看一个二维矩阵的几何意义:
2?? ?? 1
-1?? ?? 2
代表了二维坐标中的两个向量p = [2,1],q = [-1,2],为了方便理解写成如下:
?x??????? y
2???????? 1
-1??????? 2
可以看出矩阵第一列表示X轴,第二列表示Y轴,那么在x轴的基向量p' =[1, 0]就是第一行,在y轴上的基向量是q' =[0, 1]就是第二行,正好是一个单位矩阵:
1??? 0
0???? 1
那么由单位矩阵变到上面的二维矩阵,可以看成是:
x轴变换成向量p,y轴变换成向量q,? 也就有了缩放和旋转效果,我这没有图可能不好理解,可以想象一样或在纸上画一下向量p'变到p的过程。
在Matrix类中表示成了:
a???? b
c????? d
在加上平移列就表示成了:
a???? b ? ? tx
c???? d???? ty
0???? 0???? 1
看看缩放的矩阵变换表示:
Sx????? 0??????? 0
0??????? Sy????? 0
0??????? 0??????? 1
就是x轴向量p'=[1,0] 变成 p=[Sx, 0]了, x轴变大了,y轴同理,如果是显示对象就是宽高变了,所以是缩放。

倾斜的矩阵变换:
0????? skewY ???? 0
skewX ?? 0 ?????? 0
0??????? 0??????? 1
旋转的矩阵变换:
cos(a)??? sin(a)?? 0
-sin(a)?? cos(a)?? 0
? 0???????? 0????? 1

在Matrix3D中原理是一样,只是加了一个z轴,3维的单位矩阵如下:
x轴?? y轴 ?? z轴

1????? 0????? 0
0????? 1??? ? 0
0????? 0????? 1

其实都是些向量运算,向量加减,点积,叉积,可以在坐标系中画一画向量的变化比较直观。

热点排行