【转】二维图形的几何变换

OpenGL和OpenInventor中坐标变换是一个基本概念,不搞清楚这些概念,变换矩阵会一塌糊涂,从下面网站搜到一些基础知识,补一补。

http://202.118.167.67/eol/data/res/jsjtxx/Chapter6/CG_Txt_6_011.htm

 

正如我们在附录中提到的那样,用齐次坐标表示点的变换将非常方便,因此在本节中所有的几何变换都将采用齐次坐标进行运算。二维齐次坐标变换的矩阵的形式是:

这个矩阵每一个元素都是有特殊含义的。
形进行平移变换;[g h]是对图形作投影变换;[i]则是对图形整体进行缩放变换。

1)平移变换

 

2)缩放变换

 

3)旋转变换



4)对称变换

 

对称变换其实只是abde取0、1等特殊值产生的一些特殊效果。例如:

  1. b=d=0,a=-1,e=1时有x´=-xy´=y,产生与y轴对称的图形

  2. b=d=0,a=-1,e=-1时有x´=xy´=-y,产生与x轴对称的图形。

  3. b=d=0,a=e=-1时有x´=-xy´=-y,产生与原点对称的图形。

  4. b=d=1,a=e=0时有x´=yy´=x,产生与直线y=x对称的图形。

  5. b=d=-1,a=e=0时有x´=-yy´=-x,产生与直线y=-x对称的图形。

5)错切变换

 

  1. d=0时,x´=x+byy´=y,此时,图形的y坐标不变,x坐标随初值  (xy)及变换系数b作线性变化。

  2. b=0时,x´=xy´=dx+y,此时,图形的x坐标不变,y坐标随初值  (xy)及变换系数d作线性变化。



6)复合变换

如果图形要做一次以上的几何变换,那么可以将各个变换矩阵综合起来进行一步到位的变换。复合变换有如下的性质:

  1. 复合平移

    对同一图形做两次平移相当于将两次的平移两加起来:

  2. 复合缩放

    两次连续的缩放相当于将缩放操作相乘:

  3. 复合旋转

    两次连续的旋转相当于将两次的旋转角度相加: 缩放、旋转变换都与参考点有关,上面进行的各种变换都是以原点为参考点的。如果相对某个一般的参考点(xfyf)作缩放、旋转变换,相当于将该点移到坐标原点处,然后进行缩放、旋转变换,最后将(xfyf)点移回原来的位置。切记复合变换时,先作用的变换矩阵在右端,后作用的变换矩阵在左端。

  4. 关于(xfyf)点的缩放变换

  5. 绕(xfyf)点的旋转变换

posted @ 2012-02-28 10:09  申龙斌的程序人生  阅读(1898)  评论(0编辑  收藏  举报