第4章二维图形变换_第1页
第4章二维图形变换_第2页
第4章二维图形变换_第3页
第4章二维图形变换_第4页
第4章二维图形变换_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第第4章章 二维变换及二维观察二维变换及二维观察24.5 4.5 二维图形变换二维图形变换 一、图形变换基本概念一、图形变换基本概念 1 1、定义、定义 即对原图形进行平移、旋转、缩小或放大等变换操作即对原图形进行平移、旋转、缩小或放大等变换操作。 在计算机图形显示或绘图输入过程中,往往需要对图在计算机图形显示或绘图输入过程中,往往需要对图形指定部分的形状、尺寸大小及显示方向进行修改,形指定部分的形状、尺寸大小及显示方向进行修改,以达到改变整幅图形的目的,这就需要对图形进行平以达到改变整幅图形的目的,这就需要对图形进行平移、旋转、缩小或放大等变换操作。因此,图形变换移、旋转、缩小或放大等变换

2、操作。因此,图形变换是计算机绘图基本技术之一,利用它可以用一些很简是计算机绘图基本技术之一,利用它可以用一些很简单的图组合成相当复杂的图,可以把用户坐标系下的单的图组合成相当复杂的图,可以把用户坐标系下的图形变换到设备坐标系下。利用图形变换还可以实现图形变换到设备坐标系下。利用图形变换还可以实现二维图形和三维图形之间转换,甚至还可以把静态图二维图形和三维图形之间转换,甚至还可以把静态图形变为动态图形,从而实现景物画面的动态显示,下形变为动态图形,从而实现景物画面的动态显示,下面主要讨论二维图形变换。面主要讨论二维图形变换。 3 2 2、图形变换分类、图形变换分类 图形变换有两种形式:图形变换有

3、两种形式: 视象变换视象变换: :图形不动,而坐标系变动,即变换图形不动,而坐标系变动,即变换前与变换后的图形是针对不同的坐标而言的,前与变换后的图形是针对不同的坐标而言的,也称之为坐标模式也称之为坐标模式 几何变换几何变换: :另一种是坐标系不动,而图形改变,另一种是坐标系不动,而图形改变,即变换前与变换后的坐标值是针对同一坐标系即变换前与变换后的坐标值是针对同一坐标系而言的,也称之为图形模式变换,而言的,也称之为图形模式变换, 实际应用中后种图形变换更具有实际意义,实际应用中后种图形变换更具有实际意义,我们讨论的图形变换主要是属于后一种变换我们讨论的图形变换主要是属于后一种变换 4二、二维

4、图形几何变换的基本原理二、二维图形几何变换的基本原理 1 1几何变换几何变换 在计算机绘图应用中,经常要实现从一个几何图在计算机绘图应用中,经常要实现从一个几何图形到另一个几何图形的变换。例如,将图沿某一方向形到另一个几何图形的变换。例如,将图沿某一方向平移一段距离;将图形旋转一定的角度;或将图形放平移一段距离;将图形旋转一定的角度;或将图形放大;反之把图形缩小等等。这些图形变换的效果虽然大;反之把图形缩小等等。这些图形变换的效果虽然各不相同,本质上却都是依照一定的规则,将一个几各不相同,本质上却都是依照一定的规则,将一个几何图形的点都变为另一个几何图形的确定的点,这种何图形的点都变为另一个几

5、何图形的确定的点,这种变换过程称为几何变换。变换过程称为几何变换。 几何变换的规则是可以用函数来表示的。由于一几何变换的规则是可以用函数来表示的。由于一个二维图形可以分解成点、直线、曲线。把曲线离散个二维图形可以分解成点、直线、曲线。把曲线离散化,它可以用一串短直线段来逼近;而直线段可以是化,它可以用一串短直线段来逼近;而直线段可以是一系列点的集合,因此点是构成图形的基本几何元素一系列点的集合,因此点是构成图形的基本几何元素之一。我们先来讨论点的几何变换的函数表示。之一。我们先来讨论点的几何变换的函数表示。 5 二维平面图形的几何变换是指在不改变图形连线次二维平面图形的几何变换是指在不改变图形

6、连线次序的情况下,对一个平面点集进行的线性变换。序的情况下,对一个平面点集进行的线性变换。 二维平面图形的轮廓线,不论是由直线段组成二维平面图形的轮廓线,不论是由直线段组成(多边形),还是由曲线段组成,都可以用它的轮廓(多边形),还是由曲线段组成,都可以用它的轮廓线上顺序排列的平面点集来描述,例如长方形线上顺序排列的平面点集来描述,例如长方形ABCDABCD,是由四个角点是由四个角点A A(x x1 1,y y1 1),),B B(x x2 2,y y2 2),),C C(x x3 3,y y3 3),),D D(x x4 4,y y4 4)顺序连接而成,为了使画出的图形是闭合顺序连接而成,为

7、了使画出的图形是闭合的,首尾两点必须连接。的,首尾两点必须连接。6 二维平面图形变换的结果有两种,一是使图形产生位二维平面图形变换的结果有两种,一是使图形产生位置的改变;另一种是使图形产生变形,例如把图形放大。置的改变;另一种是使图形产生变形,例如把图形放大。 对二维图形进行几何变形有五种基本变换形式,它们是:对二维图形进行几何变形有五种基本变换形式,它们是:平移、旋转、比例、对称和错切。平移、旋转、比例、对称和错切。7 2 2基本几何变换的解析表示基本几何变换的解析表示 (l l)平移变换平移变换 平面上一点平面上一点P P(x x,y y),),如果在如果在X X轴方向的平移增量为轴方向的

8、平移增量为t tx x,在在Y Y轴方向平移增量为轴方向平移增量为t ty y时,则平移后所得新点时,则平移后所得新点P P( (x x ,y y)坐标表达式为:坐标表达式为: x x = = x x + + t tx x, y y = = y y + + t ty y 我们把这一变换称为平移变换。我们把这一变换称为平移变换。 如果对一图形的每个点都进行上述变换,即可得到该图如果对一图形的每个点都进行上述变换,即可得到该图形的平移变换。实际上,直线的平移变换,可以通过对其形的平移变换。实际上,直线的平移变换,可以通过对其定义端点的平移变换来实现,对于其它类型的变换这种处定义端点的平移变换来实现

9、,对于其它类型的变换这种处理方法也是可行的。理方法也是可行的。 平移变换只改变图形的位置,不改变图形的大小和形状平移变换只改变图形的位置,不改变图形的大小和形状tytx8(2 2)比例变换)比例变换 一个图形中的坐标点(一个图形中的坐标点(x x,y y),),若在若在X X轴方向有一个比轴方向有一个比例系数例系数S Sx x,在在Y Y轴方向有一个比例系数轴方向有一个比例系数S Sy y,则该图形的新则该图形的新坐标点(坐标点(x x ,y y )的表达式为的表达式为 x x = = xSxSx x y y = = ySySy y; 这一变换称为比例变换。这一变换称为比例变换。 比例变换不仅

10、改变图形的位置,而且改变图形的大小比例变换不仅改变图形的位置,而且改变图形的大小 9(3 3)旋转变换)旋转变换 若图形中的坐标点(若图形中的坐标点(x x,y y)绕坐标原点逆时针旋转一绕坐标原点逆时针旋转一个角度个角度 ,则该点变换后的新坐标(则该点变换后的新坐标(x x,y y)与交换与交换前的坐标前的坐标( (x x,y y) )的关系为:的关系为: x x = = xcosxcos - - ysinysiny y = = xsinxsin + + ycosycos 旋转变换只能改变图形的方位,而图形的大小和形状旋转变换只能改变图形的方位,而图形的大小和形状不变,不变, 10(4 4)

11、对称变换)对称变换如果经过变换后所得到的图形与变换前的图形关于如果经过变换后所得到的图形与变换前的图形关于X X坐标坐标轴是对称的,则称此变换为关于轴是对称的,则称此变换为关于X X轴的对称变换。经过这轴的对称变换。经过这一变换后的坐标点(一变换后的坐标点(x x ,y y )与变换前的对应坐标点(与变换前的对应坐标点(x x,y y)的关系为:的关系为:x x = = x x, y y = - = -y y 与此类似,若变换前后的图形关于与此类似,若变换前后的图形关于Y Y轴对称,则称为轴对称,则称为关于关于Y Y轴的对称变换。这一变换前后点的坐标间的关系:轴的对称变换。这一变换前后点的坐标

12、间的关系: x x = - = -x x,y y = = y y当图形对当图形对X X轴和轴和Y Y轴都进行对称变换时,即得相对于原点轴都进行对称变换时,即得相对于原点的中心对称变换。这一变换前后点的坐标之间的关系为的中心对称变换。这一变换前后点的坐标之间的关系为: x x = - = -x x,y y = - = -y y对称变换只改变图形方位,不改变其形状和大小。对称变换只改变图形方位,不改变其形状和大小。 1112(5 5)错切变换)错切变换如果变换前坐标点(如果变换前坐标点(x x,y y)与变换后对应的新坐标点(与变换后对应的新坐标点(x x ,y y )的关系为:的关系为: x x

13、 = = x x + + cy cy,y y = = y y我们称这一变换为沿我们称这一变换为沿X X轴的错切变换,式中轴的错切变换,式中c c为错切系数为错切系数与此类似,若变换前后对应点的坐标关系为:与此类似,若变换前后对应点的坐标关系为: x x = = x x, y y = = y y + + bxbx 则称此变换为沿则称此变换为沿Y Y轴的错切变换,其中轴的错切变换,其中b b为错切系数。为错切系数。错切变换不仅改变图形的形状,而且改变图形的方位,错切变换不仅改变图形的形状,而且改变图形的方位,但图形中的平行关系不变,但图形中的平行关系不变, 13一般把上述变换统称为基本的图形变换,

14、绝大部一般把上述变换统称为基本的图形变换,绝大部分复杂的图形变换都可以通过这些基本交换的适分复杂的图形变换都可以通过这些基本交换的适当组合来实现。当组合来实现。 14二、几何变换的矩阵表示形式二、几何变换的矩阵表示形式 1. 1. 变换矩阵变换矩阵任何一个复杂图形都是由任意多个有序点集连线而成。任何一个复杂图形都是由任意多个有序点集连线而成。在解析几何学中。在二维空间内,平面上的点可以用一在解析几何学中。在二维空间内,平面上的点可以用一行两列矩阵行两列矩阵x yx y或两行一列矩阵来表示。由此,一个或两行一列矩阵来表示。由此,一个由由n n个点的坐标组成的复杂图形可以用个点的坐标组成的复杂图形

15、可以用n n2 2阶矩阵表示:阶矩阵表示: nxxxx.321 nyyyy.321这种图形的表示法称为二维图形的矩阵表示法。这种图形的表示法称为二维图形的矩阵表示法。15由此可知,图形的变换可用矩阵运算来实现。具体说就由此可知,图形的变换可用矩阵运算来实现。具体说就是由构成图形的点集的矩阵与是由构成图形的点集的矩阵与T= T= 矩阵乘法运算,矩阵乘法运算,即即我们称我们称T= T= 为二维图形变换矩阵,其中点集中任为二维图形变换矩阵,其中点集中任意一点(意一点(x x,y y)变换后坐标为:变换后坐标为: ca db nnnnnncybxdybxdybxcyaxcyaxcyaxdbcayyyx

16、xx.221122112121 dbca 是是变变换换后后的的坐坐标标式式中中yxyxdybxcyaxdbcayx 16 dybxycyaxx 这是我们熟悉的关于直角坐标变换因子。这是我们熟悉的关于直角坐标变换因子。由上式可知,变换矩阵由上式可知,变换矩阵 中各元素决定着图形中各元素决定着图形各种不同变换各种不同变换。 dbcaT172 2二维基本变换的矩阵表示二维基本变换的矩阵表示(1 1)比例变换)比例变换 若令变换矩阵若令变换矩阵 则写成矩阵形式为:则写成矩阵形式为: daT00 00yxdyaxdayx 若取若取a=3 d=1 a=3 d=1 对点(对点(2 2,3 3)做变换)做变换

17、, ,则则 可以看出,可以看出,a1a1, d=1 d=1,变换后图形沿变换后图形沿X X方向放大,方向放大, 显然,当显然,当00a1a1d1时,则使图形沿时,则使图形沿Y Y方向放大方向放大 36100332 yx18a a11, d=1 d=1,变换后变换后图形沿图形沿X X方向放大方向放大 当当a=1a=1,d1d1时,则使时,则使图形沿图形沿Y Y方向放大方向放大 19若取若取a=1a=1,d=0d=0,图形沿图形沿Y Y方向压缩成线段,如下图所示方向压缩成线段,如下图所示当当a=1a=1,d=1d=1变换后图形没有变化,称这种变换矩阵为恒变换后图形没有变化,称这种变换矩阵为恒等矩阵

18、。等矩阵。 4321000024420001442224424321 yxyx20若取若取a=d=1.5a=d=1.5对下图中(对下图中(a a)矩阵矩阵1 2 3 41 2 3 4做变换,则做变换,则各点在各点在X X,Y Y两个方向产生相等的比例变换,即变换后两个方向产生相等的比例变换,即变换后图形和变换前图形相似,相似中心为坐标原点图形和变换前图形相似,相似中心为坐标原点。 若若adad时,使图形在时,使图形在X X和和Y Y两个方向产生不相等比例两个方向产生不相等比例变换。下图变换。下图( (b)b)是是a=2,d=1.5a=2,d=1.5时对时对 ( (a)a)中矩阵中矩阵12341

19、234变换变换结果。结果。 图图 ( (c)c)是取是取a=2,d=0.5a=2,d=0.5对矩阵对矩阵12341234变换结果,变换变换结果,变换后图形在后图形在X X方向放大,在方向放大,在Y Y方向缩小。方向缩小。 4321663336635.1005.1442224424321 21(2 2)对称变换)对称变换 令变换矩阵令变换矩阵T T 中中a a = -1, = -1,d d = 1, = 1,即即 使图形对使图形对Y Y轴对称轴对称例如:例如:如下图所示如下图所示 1001T3 215621421001562142321 22当当a=1a=1,d=1d=1时,图形对时,图形对X

20、X轴对称即轴对称即 1001T当当 时,图形对时,图形对+45+45度线对称度线对称 当当 时,图形时,图形4545度线对称度线对称 0110T 0110T图形对图形对+45+45度线对称度线对称图形对图形对- -4545度线对称度线对称23(3 3)错切变换)错切变换 当变换矩阵中的当变换矩阵中的a a= =d d=1=1,b b与与c c中一个为零,另一个为正中一个为零,另一个为正 数或负数时,即数或负数时,即 ,它对图形的作用是使图,它对图形的作用是使图 形产生沿一个坐标方向错切。形产生沿一个坐标方向错切。 由此可见,点的由此可见,点的X X坐标不变。坐标不变。y = y = kx+yk

21、x+y,即在原来坐即在原来坐标上加上标上加上kxkx,即沿即沿+ +Y Y方向移动方向移动kxkx值。点(值。点(0 0,0 0)则是不)则是不移动的。移动的。K K是一个常数,所以是一个常数,所以tgtg= =kx/xkx/x=k=k,即平行即平行X X轴轴的线段对的线段对X X轴倾斜轴倾斜角度。角度。=45=45度时,度时,k=1k=1。 101kT ykxxkyxyx 10124例如:例如: 由下图可见,图形沿由下图可见,图形沿+ +Y Y方向错切,这是对在第一方向错切,这是对在第一象限内的点而言。象限内的点而言。当当 时,它使第一象限内图形沿时,它使第一象限内图形沿+ +X X方向错切

22、方向错切 4 3 2 1361212211101441112214321 101kT第一像限内图形第一像限内图形沿沿+ +Y Y方向错切方向错切第一像限内图形第一像限内图形沿沿+ +X X方向错切方向错切25(4 4)旋转变换)旋转变换 旋转变换是指坐标轴不动,点或图形绕坐标原点旋转旋转变换是指坐标轴不动,点或图形绕坐标原点旋转角,以逆时针方向取正值。如下图所示,其变换矩阵角,以逆时针方向取正值。如下图所示,其变换矩阵则则 cossinsincosT cossinsincosyxyx26逆时钟旋转逆时钟旋转=90=90度时,变换矩阵度时,变换矩阵顺时针旋转顺时针旋转= -90= -90度时,度

23、时, =180 =180度时,度时, 下图是矩阵旋转下图是矩阵旋转3030度的情况,其坐标变换如下:度的情况,其坐标变换如下: 0110T 0110T 1001T 134. 0866. 1134. 0886. 1232. 2232. 1232. 2232. 1886. 05 . 05 . 0866. 01111222227三、二维图形齐次坐标矩阵变换三、二维图形齐次坐标矩阵变换1 1、 齐次坐标与平移变换齐次坐标与平移变换前面四种变换都可以通过变换矩阵前面四种变换都可以通过变换矩阵来实现,那么它是否适合于平移变换呢?若实现平移变来实现,那么它是否适合于平移变换呢?若实现平移变换,变换前后的坐标

24、必须满足下面的关系:换,变换前后的坐标必须满足下面的关系:这里这里t tx x,t ty y是平移量,应为常数,但是应用上述的变换矩是平移量,应为常数,但是应用上述的变换矩阵对点进行变换:阵对点进行变换: dbcaT tyyytxxx yxdybxcyaxdbcayx 28而这里的而这里的cycy,bxbx均非常量,因此用原来的均非常量,因此用原来的2 22 2的变换矩的变换矩阵是无法实现平移变换的,我们把阵是无法实现平移变换的,我们把2 22 2矩阵扩充为矩阵扩充为3 32 2矩阵,即令:矩阵,即令:但这样又带来新的问题,二维图形的点集矩阵是但这样又带来新的问题,二维图形的点集矩阵是n n2

25、 2阶阶的,而变换矩阵是的,而变换矩阵是3 32 2阶的,根据矩阵乘法规则,它们阶的,根据矩阵乘法规则,它们是无法相乘的。为此,我们把点向量也作扩充,将是无法相乘的。为此,我们把点向量也作扩充,将 扩展为扩展为 , ,即把点集矩阵扩充为即把点集矩阵扩充为n n3 3阶阶矩阵。这样,点集矩阵与变换矩阵即可以进行乘法运算矩阵。这样,点集矩阵与变换矩阵即可以进行乘法运算: mdblcaT yx 1yx mdybxlcyaxmdblcayx 129对点进行平移变换:对点进行平移变换:对点进行平移变换:对点进行平移变换:这里这里L L,m m分别为分别为x x,y y方向的平移量。方向的平移量。 为使二

26、维变换矩阵具有更多的功能,可将为使二维变换矩阵具有更多的功能,可将3 32 2变换矩变换矩阵进一步扩充成阵进一步扩充成3 33 3阶矩阵,即:阶矩阵,即:则平移变换矩阵为:则平移变换矩阵为: mlTt1001 mylxmlyx 10011 sqpmdblcaT 1001001mlTt30对点进行平移变换:对点进行平移变换: 1110010011yxmylxmlyx 31例:设例:设l = 20l = 20,m = 20m = 20,对下图中的字母对下图中的字母T T做平移变换得做平移变换得:1111111148485252484840403632324444404036100201020011

27、111111128283232282820201612122424202016HGFEDCBAHGFEDCBAyxyx 32如上讨论,在平移变换中,我们将如上讨论,在平移变换中,我们将 扩充为扩充为 , 实际上是由二维向量变为三维向量,实际上是由二维向量变为三维向量,但但 可以看作是可以看作是z = 1z = 1平面上的点,也就是说,平面上的点,也就是说,经此扩充后,图形落在了经此扩充后,图形落在了z = 1z = 1的平面上,它对图形的形的平面上,它对图形的形状没有影响。状没有影响。 这种用三维向量表示二维向量的方法叫做齐次坐标这种用三维向量表示二维向量的方法叫做齐次坐标法。进一步推广,用法

28、。进一步推广,用n+1n+1维向量表示维向量表示n n维向量的方法称之维向量的方法称之为齐次坐标法。为齐次坐标法。 yx 1yx 1yx332 2二维图形齐次坐标矩阵变换二维图形齐次坐标矩阵变换对于前面介绍基本变换可用二维图形齐次坐标变换矩阵对于前面介绍基本变换可用二维图形齐次坐标变换矩阵一般表达式一般表达式这这3 33 3矩阵中各元素功能一共可分成四块,即矩阵中各元素功能一共可分成四块,即 这个这个2 22 2子矩阵可以实现图形的比例、对称、子矩阵可以实现图形的比例、对称、 错切、旋转等基本变换;错切、旋转等基本变换; 可以实现图形平移变换;可以实现图形平移变换; 可以实现图形透视变换;可以

29、实现图形透视变换; 可以实现图形全比例变换。可以实现图形全比例变换。 sqpmdblcaT dbca ml qp s34例如,用矩阵例如,用矩阵 对图形进行变换:对图形进行变换: 当当s1s1s1时,图形产生整体比例缩小。时,图形产生整体比例缩小。当当s=1s=1时,图形大小不变。时,图形大小不变。由此表明,齐次坐标的应用,扩大了变换矩阵功能,只由此表明,齐次坐标的应用,扩大了变换矩阵功能,只要对矩阵中有关元素赋以不同的要对矩阵中有关元素赋以不同的 值,即可达到预期变换值,即可达到预期变换目的。目的。 sT00010001 1000100011sysxsyxsyx3536对称变换37四、组合变

30、换四、组合变换 上述的五种二维图形几何变换是二维图形几何变换上述的五种二维图形几何变换是二维图形几何变换中的最基本的几何变换,在进行这些基本的几何变换时中的最基本的几何变换,在进行这些基本的几何变换时,我们给定了一些特定的约束条件,如,我们给定了一些特定的约束条件,如: :旋转变换是指绕旋转变换是指绕坐标原点的旋转,比例变换是关于坐标原点的放大或缩坐标原点的旋转,比例变换是关于坐标原点的放大或缩小等等,因而是几何变换中的一些简单情形。实际中的小等等,因而是几何变换中的一些简单情形。实际中的二维图形作几何变换时要复杂得多,往往是多种基本的二维图形作几何变换时要复杂得多,往往是多种基本的几何变换复

31、合而成的,因此我们把由若干个基本的几何几何变换复合而成的,因此我们把由若干个基本的几何变换复合而成为一个几何变换的过程称为组合变换也称变换复合而成为一个几何变换的过程称为组合变换也称为几何变换的级联。为几何变换的级联。381 1绕任意点旋转变换绕任意点旋转变换平面图形绕任意点平面图形绕任意点p p(x xp p,y yp p)旋转角,需要通过以下几旋转角,需要通过以下几个步骤来实现:个步骤来实现:(1 1)将旋转中心平移到原点,变换矩阵为:)将旋转中心平移到原点,变换矩阵为: 10010011ppyxTYXp p(x xp p,y yp p)39(2 2) 将图形绕坐标系原点旋转角将图形绕坐标

32、系原点旋转角 ,变换矩阵为:变换矩阵为: 1000cossin0sincos2 TYX(3 3) 将旋转中心平移回到原来位置,变换矩阵为:将旋转中心平移回到原来位置,变换矩阵为: syxTpp0010013YX40因此,绕任意点因此,绕任意点p p的旋转变换矩阵为:的旋转变换矩阵为: 显然,当显然,当x xp p=0=0,y yp p=0=0时,即为对原点的旋转变换矩阵。时,即为对原点的旋转变换矩阵。 100)cos1(sincossinsin)cos1(sincos0010011000cossin0sincos1001001321 ppppppppyxyxsyxyxTTTT412 2对任意点

33、做比例变换对任意点做比例变换 设任意一点设任意一点p p(x xp p, y yp p) ,作比例变换需通过以下步作比例变换需通过以下步骤来完成:骤来完成: (1 1)将)将P P点移到坐标原点,变换矩阵为:点移到坐标原点,变换矩阵为: 10010011ppyxTYX42(2 2)作关于原点的比例变换,变换矩阵为:)作关于原点的比例变换,变换矩阵为:(3 3)对原点作反平移变换,移到原来的位置:)对原点作反平移变换,移到原来的位置: 10000001daTYX 10010013ppyxTYX43对任意点对任意点P P作比例变换,其变换矩阵为作比例变换,其变换矩阵为 100)1(0)1(0001

34、00110000001001001321dydaxasyxdayxTTTTpppppp443 3对任意直线对称变换对任意直线对称变换如下图所示,设任意直线的方程为:如下图所示,设任意直线的方程为:Ax+By+C=0Ax+By+C=0,直线在直线在X X轴和轴和Y Y轴上的截矩分别轴上的截矩分别C/AC/A和和C/BC/B,直线与直线与X X轴的夹角轴的夹角为,为,=arctgarctg(A/B)(A/B)。YX-C/B-C/A45对任意直线的对称变换由以下几个步骤来完成:对任意直线的对称变换由以下几个步骤来完成:(1 1)平移直线,使其通过原点(可以沿)平移直线,使其通过原点(可以沿X X向和

35、向和Y Y向平移,向平移,这里沿这里沿X X向将直线平移到原点),变换矩阵为:向将直线平移到原点),变换矩阵为: 100010/011ACTYX46(2 2)绕原点旋转,使直线与某坐标轴重合(这里以与)绕原点旋转,使直线与某坐标轴重合(这里以与X X轴重合为例),变换矩阵如下:轴重合为例),变换矩阵如下: 1000cossin0sincos1000)cos()sin(0)sin()cos(2 TYX47(3 3)对坐标轴对称变换(这里是对)对坐标轴对称变换(这里是对X X轴),其变换矩阵为:轴),其变换矩阵为: 1000100013TYX48(4 4)绕原点旋转,使直线回到原来与)绕原点旋转,

36、使直线回到原来与X X轴成角的位置,轴成角的位置,变换矩阵为:变换矩阵为: 1000cossin0sincos4 TYX49(5 5)平移直线,使其回到原来的位置,变换矩阵为:)平移直线,使其回到原来的位置,变换矩阵为: 100010/015ACTX50通过以上五个步骤,即可实现图形对任意直线的对称变通过以上五个步骤,即可实现图形对任意直线的对称变换,其组合变换矩阵如下:换,其组合变换矩阵如下: 100/2sin2cos2sin/)12(cos2sin2cos54321ACACTTTTTT 51综合上述,复杂变换是通过基本变换组合而成的,由于综合上述,复杂变换是通过基本变换组合而成的,由于矩阵

37、乘法不适用于交换律,即,因此,组合变换顺序不矩阵乘法不适用于交换律,即,因此,组合变换顺序不能颠倒,顺序不同,则变换结果不同。能颠倒,顺序不同,则变换结果不同。52例例4 43 3 各顶点坐标各顶点坐标A A(3 3,0 0),),B B(4 4,2 2),),C C(6 6,0 0)使其绕原点转使其绕原点转9090度,再向度,再向X X方向平移方向平移2 2,Y Y方向平移方向平移11。 因因=90=90O O 则变换矩阵:则变换矩阵: 111532202100101210111020643100101210100190cos90sin290sin90cosCBACBAOOOO 53如果先进

38、行平移变换,再进行旋转变换,则矩阵为:如果先进行平移变换,再进行旋转变换,则矩阵为:111865131100201110111020643100cossincossinsincossincos1000cossin0sincos1001001CBACBAttttttTyxyxyx 由于变换顺序不同,其结果也不同。由于变换顺序不同,其结果也不同。 54例例4 44 4 设有一三角形设有一三角形ABCABC,其三个顶点坐标为其三个顶点坐标为A A(2 2,4 4),),B B(2 2,2 2),),C C(5 5,2 2),),求对于直线求对于直线22x+3y+3=0 x+3y+3=0的的对称变换后

39、对称变换后CBA 1110791. 23061. 00737. 16123. 55379. 33839. 51113245221003845. 13838. 0923. 09243. 0923. 03838. 0100/2sin2cos2sin/) 12(cos2sin2cosCBATCBAACACT 其中其中 = = arctyarcty(-A/B)=arcty(2/3)(-A/B)=arcty(2/3) 33330 0414155变换后的如下图所示。变换后的如下图所示。 564.6 4.6 二维图像裁剪二维图像裁剪一、概述一、概述1 1、定义、定义 为了描述图形对象,我们必须存储它的全部信

40、息,为了描述图形对象,我们必须存储它的全部信息,但有时为了达到分区描述或重点描述某一部分的目的,但有时为了达到分区描述或重点描述某一部分的目的,往往将要描述的部分置于一个窗口之内,而将窗口之外往往将要描述的部分置于一个窗口之内,而将窗口之外部部“剪掉剪掉”,这个处理过程叫做裁剪。,这个处理过程叫做裁剪。 裁剪实质上是从数据集合中抽取信息的过程,裁剪实质上是从数据集合中抽取信息的过程,这个这个过程是通过一定计算方法实现的。过程是通过一定计算方法实现的。裁剪就是将指定窗口裁剪就是将指定窗口作为图形边界,从一幅大的画面中抽取所需的具体信息作为图形边界,从一幅大的画面中抽取所需的具体信息,以显示某一局

41、部画面或视图。,以显示某一局部画面或视图。第四章第四章 二维图形生成和变换技术二维图形生成和变换技术 4.1 4.1 基本绘图元素基本绘图元素 4.2 4.2 直线段的生成直线段的生成 4.3 4.3 曲线的生成曲线的生成 4.4 4.4 区域填充区域填充 4.5 4.5 二维图形变换二维图形变换 4.6 4.6 二维图像剪裁二维图像剪裁 57 在实际应用中,经常会遇到一些大而复杂的图形,在实际应用中,经常会遇到一些大而复杂的图形,如集成电路布线图、建筑结构图、地形地貌图等。由于如集成电路布线图、建筑结构图、地形地貌图等。由于显示屏幕的尺寸及其分辨率限制,这样复杂的图形往往显示屏幕的尺寸及其分

42、辨率限制,这样复杂的图形往往不能全部显示出来,即使将它们采用比例变换后全部显不能全部显示出来,即使将它们采用比例变换后全部显示在同一屏幕上,也只能表现一个大致轮廓,并且图形示在同一屏幕上,也只能表现一个大致轮廓,并且图形拥挤不清。因此对复杂图形,一般只能显示它的局部内拥挤不清。因此对复杂图形,一般只能显示它的局部内容,我们在研究某复杂图形时,往往对某特定画面感兴容,我们在研究某复杂图形时,往往对某特定画面感兴趣,在这种情况下,我们将这一特定区域放大后显示出趣,在这种情况下,我们将这一特定区域放大后显示出来,而把周围画面部分全部擦除,这样可清晰地观察其来,而把周围画面部分全部擦除,这样可清晰地观

43、察其细节部分细节部分 58我们假定裁剪是针对用户坐标中窗口边界进行的,裁剪我们假定裁剪是针对用户坐标中窗口边界进行的,裁剪完成后,再把窗口内图形映射到视区。所以裁剪的目的完成后,再把窗口内图形映射到视区。所以裁剪的目的是显示可见点和可见部分,删除视区外的部分。例如,是显示可见点和可见部分,删除视区外的部分。例如,下图(下图(a a)定义了一个矩形窗口定义了一个矩形窗口ABCDABCD,窗口内会窗口内会有有EFGEFG的一部分,而直线段的一部分,而直线段EGEG、FGFG都有一部分在都有一部分在窗口外。然后将落在窗口内这部分图形传送到视图区内窗口外。然后将落在窗口内这部分图形传送到视图区内显示,

44、如图(显示,如图(b b)所示。此时,窗口外那部分被裁剪掉。所示。此时,窗口外那部分被裁剪掉。 59二、二、 窗口区和视图区窗口区和视图区用户域:在进行图形设计时,图形输出程序中的图形都用户域:在进行图形设计时,图形输出程序中的图形都 是在用户坐标系中定义的。此坐标系拥有的区是在用户坐标系中定义的。此坐标系拥有的区 域在理论上是无限的,在使用时我们可以把它域在理论上是无限的,在使用时我们可以把它 当作是一个有限的矩形区,即用户域。当作是一个有限的矩形区,即用户域。窗口区:用户可以在用户域中指定任意区域输出到屏幕窗口区:用户可以在用户域中指定任意区域输出到屏幕 上,这个指定区域称为窗口区,简称窗

45、口(上,这个指定区域称为窗口区,简称窗口(WindowWindow) 如图所示的矩形如图所示的矩形 ABCD ABCD 就是我们定义的一个窗口。就是我们定义的一个窗口。我们可用该矩形的左下角和右上角两点坐标来定义其大我们可用该矩形的左下角和右上角两点坐标来定义其大小和位置。因此,定义窗口的目的就是选取用户所定义小和位置。因此,定义窗口的目的就是选取用户所定义的图形中需要观察的那一部分图形。的图形中需要观察的那一部分图形。窗口区,用窗口区,用左下角和右左下角和右上角来定义上角来定义60视图区:简称视图(视图区:简称视图(ViewportViewport),),是在屏幕上定义的一是在屏幕上定义的一

46、个小于或等于屏幕区域一个矩形块。同样也是用该矩形个小于或等于屏幕区域一个矩形块。同样也是用该矩形左下角和右上角两点坐标来定义大小和位置。视图区可左下角和右上角两点坐标来定义大小和位置。视图区可用来显示某一窗口内图形。所以人们利用窗口来选择需用来显示某一窗口内图形。所以人们利用窗口来选择需要观察那一部分图形,而利用视图区来指定这一部分图要观察那一部分图形,而利用视图区来指定这一部分图形在屏幕上显示位置。下图表示窗口与视图关系。形在屏幕上显示位置。下图表示窗口与视图关系。 屏幕屏幕视图区视图区窗口区窗口区61 在交互式图形设计中,通常把一个屏幕分为几个视图在交互式图形设计中,通常把一个屏幕分为几个

47、视图区,每个视图区都有各自用途,如图所示,视图区区,每个视图区都有各自用途,如图所示,视图区1 1为用为用户图形区,视图区户图形区,视图区2 2为命令区,视图区为命令区,视图区3 3是信息区。同时是信息区。同时用户图形区还可分为各个子区,以满足用户显示多层窗用户图形区还可分为各个子区,以满足用户显示多层窗口的需要。口的需要。 由于窗口和视图是在不同坐标系中定义的,因此,由于窗口和视图是在不同坐标系中定义的,因此,在把窗口中图形信息送到视图区之前,必须进行坐标变在把窗口中图形信息送到视图区之前,必须进行坐标变换,即把用户坐标系的坐标值转化为设备(屏幕)坐标换,即把用户坐标系的坐标值转化为设备(屏

48、幕)坐标系的坐标值,这个变换称窗口系的坐标值,这个变换称窗口视图变换。视图变换。62如图所示,设在用户坐标系下定义的窗口为:左下角点如图所示,设在用户坐标系下定义的窗口为:左下角点坐标(坐标(W Wxlxl,W Wybyb),),右上角点坐标(右上角点坐标(W Wxrxr,W Wytyt););在设备坐在设备坐标系中定义的视区为:左下角点坐标(标系中定义的视区为:左下角点坐标(V Vxlxl,V Vybyb),),右上右上角点坐标(角点坐标(V Vxrxr ,V Vytyt)。)。63由图可知:由图可知:由(由(4-244-24)式得窗口中一点)式得窗口中一点P(xP(xW W,y,yW W)

49、 )变换到视区中对应的变换到视区中对应的点点V(xV(xV V,y,yV V) )二者之间的关系为:二者之间的关系为:设设: : )244( ybytybWybytybVxlxrxlWxlxrxlVWWWyVVVyWWWxVVVx)254()()( ybybWybytybytVxlxlWxlxrxlxrVVWyWWVVyVWxWWVVxybybytybytybybytybytxlxlxrxlxrxlxlxrxlxrWWWVVVdWWVVcWWWVVVbWWVVa64则(则(4.254.25)式可写成:)式可写成:写成矩阵形式:写成矩阵形式: dcyybaxxWVWV 1000011dcbayx

50、yxWWVV65由此可见窗口由此可见窗口视图变换是比例变换和平移变换的组视图变换是比例变换和平移变换的组合变换。先进行平移变换将窗口左下角坐标移到用户坐合变换。先进行平移变换将窗口左下角坐标移到用户坐标原点,接着进行比例变换,使窗口中各点比例变换到标原点,接着进行比例变换,使窗口中各点比例变换到设备坐标系(屏幕)中,最后再作平移交换,使原点移设备坐标系(屏幕)中,最后再作平移交换,使原点移到视图左下角。到视图左下角。通过窗口通过窗口视图变换,我们就实现了将用户坐标系中视图变换,我们就实现了将用户坐标系中窗口区中任意一点转换成设备坐标系中屏幕视图区中一窗口区中任意一点转换成设备坐标系中屏幕视图区

51、中一点变换,从而就可以把实际物体图形显示在显示器上,点变换,从而就可以把实际物体图形显示在显示器上,但要注意:为了使经过窗口但要注意:为了使经过窗口视图变换后的图形在视视图变换后的图形在视图区中输出时不产生失真现象,在定义窗口和视图时,图区中输出时不产生失真现象,在定义窗口和视图时,必须保证使窗口和视图区高度和宽度之间比例相同。必须保证使窗口和视图区高度和宽度之间比例相同。 66三、三、 直线段裁剪直线段裁剪 1 1、点的剪裁、点的剪裁 裁剪的过程就是对窗口内每个图形元素都得划分一裁剪的过程就是对窗口内每个图形元素都得划分一下可见部分和不可见部分。裁剪可以在各种不同类型的下可见部分和不可见部分

52、。裁剪可以在各种不同类型的图形元素上实现,如点、向量、直线段、字符以及多边图形元素上实现,如点、向量、直线段、字符以及多边形等。形等。 裁剪算法中最基本的情况是点的裁剪。判断某一点裁剪算法中最基本的情况是点的裁剪。判断某一点P P(x x,y y)是否可见,可以利用下列一对不等式来确定该是否可见,可以利用下列一对不等式来确定该点是否在窗口范围内。点是否在窗口范围内。如图所示如图所示: : W Wxlxl x xW W W Wxrxr W Wybyb y yW W W Wytyt 满足上述两个不等式的点即在窗口内,属于可见的满足上述两个不等式的点即在窗口内,属于可见的点,应该保留;反之,则该点不

53、可见,应予舍弃。点,应该保留;反之,则该点不可见,应予舍弃。 WytWybWxlWxr67 2 2、直线段与窗口关系、直线段与窗口关系 点的裁剪虽然很简单,但要把所有的图形元素转换成点的裁剪虽然很简单,但要把所有的图形元素转换成点,然后用上述不等式判别是否可见,那是很不现实的点,然后用上述不等式判别是否可见,那是很不现实的。这样的裁剪过程所在时间就会过长,不经济。因此,。这样的裁剪过程所在时间就会过长,不经济。因此,要求一种适合较大的图形元素,比较有效的裁剪方法。要求一种适合较大的图形元素,比较有效的裁剪方法。直线段是组成一切其它图形的基础。任何图形(包括曲直线段是组成一切其它图形的基础。任何

54、图形(包括曲线、字符和多边形),一般都能用不同直线段组合形成线、字符和多边形),一般都能用不同直线段组合形成 对于任意一条直线段,它相对于一个已定义的窗口对于任意一条直线段,它相对于一个已定义的窗口位置关系不外乎有四种可能,如图所示。位置关系不外乎有四种可能,如图所示。 直线段完全被直线段完全被排斥在窗口的排斥在窗口的边框之外边框之外直线段完全直线段完全被包含在窗被包含在窗口之内口之内直线段和窗口的一条边框直线段和窗口的一条边框相交,使得该直线段被相相交,使得该直线段被相交点分成两截,其中的一交点分成两截,其中的一个截段落在窗口之内,而个截段落在窗口之内,而另一个截段留在窗口之外另一个截段留在

55、窗口之外直线段贯穿整个窗口,这样直线段贯穿整个窗口,这样,直线段就与窗口的两条边,直线段就与窗口的两条边框相交,使得原直线段被分框相交,使得原直线段被分成三个截段,其中只能有一成三个截段,其中只能有一个截段落在窗口内,而另外个截段落在窗口内,而另外的两段都处于窗口之外,的两段都处于窗口之外,68归纳以上四种情况,可以得出这样一个结论:归纳以上四种情况,可以得出这样一个结论:对于任意一条直线段,它要么被完全排斥在窗口之外,对于任意一条直线段,它要么被完全排斥在窗口之外,如上述的情况(如上述的情况(1 1);要么在窗口内留下一个可见段,并);要么在窗口内留下一个可见段,并且只能有一个可见段且只能有

56、一个可见段, ,如上所述的情况(如上所述的情况(2 2)、()、(3 3)和()和(4 4)。因为一条直线段可以由它的两个端点来唯一地确定)。因为一条直线段可以由它的两个端点来唯一地确定,所以,要确定一条直线段上位于窗口以内的可见段,所以,要确定一条直线段上位于窗口以内的可见段,仅需求得它的两个可见端点就行了。仅需求得它的两个可见端点就行了。下面我们介绍几种直线剪裁法下面我们介绍几种直线剪裁法 693 3编码裁剪法编码裁剪法(1 1)编码规则)编码规则 这一方法是由库恩和萨瑟兰德(这一方法是由库恩和萨瑟兰德(CohenCohen和和SutherlandSutherland)提提出的,该方法是把

57、包含窗口的平面区域沿窗口的四条边线出的,该方法是把包含窗口的平面区域沿窗口的四条边线分成九个区域分成九个区域. . 每个区域用一个四位代码来表示,代码中每一位分别是每个区域用一个四位代码来表示,代码中每一位分别是0 0或或1 1,是按照窗口边线来确定的,下面给出编码规则,其中,是按照窗口边线来确定的,下面给出编码规则,其中 最右边的位是第一位,依次第最右边的位是第一位,依次第 二、三、四位。二、三、四位。 第一位置第一位置 l:l:该端点位于窗口左侧该端点位于窗口左侧 第二位置第二位置 l:l:该端点位于窗口右侧该端点位于窗口右侧 第三位置第三位置 1: 1:该端点位于窗口下面该端点位于窗口下

58、面 第四位置第四位置 l:l:该端点位于窗口上面该端点位于窗口上面 否则,相应位置置否则,相应位置置0 0。 70 由编码规则可知,若线段两端点编码均为零,则两由编码规则可知,若线段两端点编码均为零,则两点均在窗口内,线段完全可见。因此,要判断两端点线点均在窗口内,线段完全可见。因此,要判断两端点线段与窗口对应关系,可用两个端点编码逐位取逻辑段与窗口对应关系,可用两个端点编码逐位取逻辑“与与”,若线段两端点逻辑,若线段两端点逻辑“与与”不为不为0 0,必在窗口外,根据,必在窗口外,根据图形中直线两端点图形中直线两端点p p1 1,p p2 2按其所在区域赋予相应代码,以按其所在区域赋予相应代码

59、,以C C1 1和和C C2 2表示,然后再根据端点对直线进行可见和不可见判表示,然后再根据端点对直线进行可见和不可见判断断(2 2)算法步骤)算法步骤下面给出直线段裁剪编码算法步骤:下面给出直线段裁剪编码算法步骤:当两端点当两端点P P1 1 (x (x1 1,y,y1 1) )和和P P2 2 (x (x2 2,y,y2 2) ),在区域在区域00000000中,即中,即满足点的裁剪不等式。满足点的裁剪不等式。 W Wxlxl (x(x1 1,x,x2 2) ) W Wxrxr W Wybyb (y(y1 1,y,y2 2)W Wytyt则两端点代码则两端点代码C C1 1C C2 20

60、0 表示均在窗口内,应全部保留表示均在窗口内,应全部保留71当两个端点在窗口边线外的同侧位置,则它们的四位当两个端点在窗口边线外的同侧位置,则它们的四位代码中,有一相同位,同时为代码中,有一相同位,同时为“1”“1”,显然两个端点代码,显然两个端点代码的逻辑乘不等于零。即的逻辑乘不等于零。即C C1 1CC2 2 0 0。此检查判断直线在窗此检查判断直线在窗口外,应全部舍弃。口外,应全部舍弃。如果直线两端点不符合上述两种情况,不能简单地全如果直线两端点不符合上述两种情况,不能简单地全部保留或全部舍弃直线时,则需计算出直线与窗口边线部保留或全部舍弃直线时,则需计算出直线与窗口边线的交点,将直线分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论