《第6章二维变换及二维观察.ppt》由会员分享,可在线阅读,更多相关《第6章二维变换及二维观察.ppt(81页珍藏版)》请在三一办公上搜索。
1、2023/8/10,1,第6章 二维变换及二维观察,提出问题,如何对二维图形进行方向、尺寸和形状方面的变换如何方便地实现在显示设备上对二维图形进行观察,2023/8/10,2,第6章 二维变换及两维观察,6.1 基本概念6.1.1 齐次坐标齐次坐标表示就是用n+1维向量表示一个n维向量。齐次坐标的不唯一性规范化齐次坐标表示就是h=1的齐次坐标表示。如何从齐次坐标转换到规范化齐次坐标?,2023/8/10,3,6.1.2 几何变换图形的几何变换是指对图形的几何信息经过平移、比例、旋转等变换后产生新的图形,是图形在方向、尺寸和形状方面的变换。,2023/8/10,4,6.1.3 二维变换矩阵,20
2、23/8/10,5,6.2 基本几何变换,基本几何变换都是相对于坐标原点和坐标轴进行的几何变换6.2.1 平移变换平移是指将p点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程。,2023/8/10,6,平移是一种不产生变形而移动物体的刚体变换(rigid-body transformation),2023/8/10,7,Tx,Ty称为平移矢量,推导:矩阵:,2023/8/10,8,6.2.2 比例变换,比例变换是指对p点相对于坐标原点沿x方向放缩Sx倍,沿y方向放缩Sy倍。其中Sx和Sy称为比例系数。,2023/8/10,9,推导:矩阵:,2023/8/10,10,2023/8/10,
3、11,整体比例变换:,2023/8/10,12,6.2.3 旋转变换,二维旋转是指将p点绕坐标原点转动某个角度(逆时针为正,顺时针为负)得到新的点p的重定位过程。,2023/8/10,13,推导:矩阵:逆时针旋转角,顺时针旋转角?,2023/8/10,14,简化计算,2023/8/10,15,6.2.4 对称变换,对称变换后的图形是原图形关于某一轴线或原点的镜像。,2023/8/10,16,2023/8/10,17,(1)关于x轴对称,2023/8/10,18,(2)关于y轴对称,2023/8/10,19,(3)关于原点对称,2023/8/10,20,(4)关于y=x轴对称,2023/8/10
4、,21,(5)关于y=-x轴对称,2023/8/10,22,6.2.5 错切变换,错切变换,也称为剪切、错位变换,用于产生弹性物体的变形处理。,2023/8/10,23,其变换矩阵为:,(1)沿x方向错切(2)沿y方向错切(3)两个方向错切,2023/8/10,24,6.2.6 二维图形几何变换的计算,几何变换均可表示成P=P*T的形式1.点的变换2.直线的变换 3.多边形的变换 4.曲线的变换,2023/8/10,25,6.3 复合变换,复合变换是指:图形作一次以上的几何变换,变换结果是每次的变换矩阵相乘。任何一复杂的几何变换都可以看作基本几何变换的组合形式。复合变换具有形式:,2023/8
5、/10,26,6.3.1 二维复合平移两个连续平移是加性的。6.3.2 二维复合比例连续比例变换是相乘的。6.3.3 二维复合旋转两个连续旋转是相加的。可写为:,2023/8/10,27,6.3.4 其它二维复合变换,2023/8/10,28,6.3.5 相对任一参考点的二维几何变换,相对某个参考点(xF,yF)作二维几何变换,其变换过程为:(1)平移(2)针对原点进行二维几何变换。(3)反平移例1.相对点(xF,yF)的旋转变换例2.相对点(xF,yF)的比例变换,2023/8/10,29,6.3.6 相对任意方向的二维几何变换,相对任意方向作二维几何变换,其变换的过程是:(1)旋转变换(2
6、)针对坐标轴进行二维几何变换;(3)反向旋转例3.相对直线y=x的反射变换,2023/8/10,30,例4.将正方形ABCO各点沿图6-8所示的(0,0)(1,1)方向进行拉伸,结果为如图所示的,写出其变换矩阵和变换过程。,2023/8/10,31,6.3.7 坐标系之间的变换,问题:,2023/8/10,32,分析:,2023/8/10,33,可以分两步进行:,2023/8/10,34,于是:,2023/8/10,35,6.3.8 光栅变换,直接对帧缓存中象素点进行操作的变换称为光栅变换。光栅平移变换:,2023/8/10,36,90、180和270的光栅旋转变换:,2023/8/10,37
7、,任意角度的光栅旋转变换:,2023/8/10,38,光栅比例变换:,2023/8/10,39,6.3.9 变换的性质,仿射变换具有平行线不变性和有限点数目的不变性平移、比例、旋转、错切和反射等变换均是二维仿射变换的特例,反过来,任何常用的二维仿射变换总可以表示为这五种变换的复合。,二维仿射变换是具有如下形式的二维坐标变换:,2023/8/10,40,二维几何变换具有如下一些性质:,直线的中点不变性;平行直线不变性;相交不变性;仅包含旋转、平移和反射的仿射变换维持角度和长度的不变性;比例变化可改变图形的大小和形状;错切变化引起图形角度关系的改变,甚至导致图形发生畸变。,2023/8/10,41
8、,6.4 两维观察,6.4.1 基本概念在计算机图形学中,将在用户坐标系中需要进行观察和处理的一个坐标区域称为窗口(Window)将窗口映射到显示设备上的坐标区域称为视区(Viewport),2023/8/10,42,要将窗口内的图形在视区中显示出来,必须经过将窗口到视区的变换(Window-Viewport Transformation)处理,这种变换就是观察变换(Viewing Transformation)。,2023/8/10,43,2023/8/10,44,观察坐标系(View Coordinate)和规格化设备坐标系(Normalized Device Coordinate)观察坐
9、标系是依据窗口的方向和形状在用户坐标平面中定义的直角坐标系。规格化设备坐标系也是直角坐标系,它是将二维的设备坐标系规格化到(0.0,0.0)到(1.0,1.0)的坐标范围内形成的。,2023/8/10,45,引入了观察坐标系和规格化设备坐标系后,观察变换分为如下图所示的几个步骤,通常称为二维观察流程。,2023/8/10,46,变焦距效果,2023/8/10,47,整体放缩效果,漫游效果,2023/8/10,48,6.4.2 用户坐标系到观察坐标系的变换,用户坐标系到观察坐标系的变换分由两个变换步骤合成:1.将观察坐标系原点移动到用户坐标系原点,2023/8/10,49,2.绕原点旋转使两坐标
10、系重合,2023/8/10,50,6.4.3 窗口到视区的变换,2023/8/10,51,要将窗口内的点(xw,yw)映射到相对应的视区内的点(xv,yv)需进行以下步骤:(1)将窗口左下角点移至用户系统系的坐标原点(2)针对原点进行比例变换(3)进行反平移,2023/8/10,52,6.5 裁剪,在二维观察中,需要在观察坐标系下对窗口进行裁剪,即只保留窗口内的那部分图形,去掉窗口外的图形。假设窗口是标准矩形,即边与坐标轴平行的矩形,由上(y=wyt)、下(y=wyb)、左(x=wxl)、右(x=wxr)四条边描述。,2023/8/10,53,6.5.1 点的裁剪,2023/8/10,54,6
11、.5.2 直线段的裁剪,假定直线段用p1(x1,y1)p2(x2,y2)表示。直线段和剪裁窗口的可能关系:完全落在窗口内完全落在窗口外与窗口边界相交,2023/8/10,55,实交点是直线段与窗口矩形边界的交点。虚交点则是直线段与窗口矩形边界延长线或直线段的延长线与窗口矩形边界的交点。,2023/8/10,56,1.Cohen-Sutherland算法基本思想:对每条直线段p1(x1,y1)p2(x2,y2)分三种情况处理:(1)直线段完全可见,“简取”之。(2)直线段完全不可见,“简弃”之。(3)直线段既不满足“简取”的条件,也不满足“简弃”的条件,需要对直线段按交点进行分段,分段后重复上述
12、处理。,2023/8/10,57,编码:对于任一端点(x,y),根据其坐标所在的区域,赋予一个4位的二进制码D3D2D1D0。编码规则如下:若xwxr,则D1=1,否则D1=0;若ywyt,则D3=1,否则D3=0。,2023/8/10,58,裁剪,裁剪一条线段时,先求出端点p1和p2的编码code1和code2,然后:(1)若code1|code2=0,对直线段应简取之。(2)若code1&code20,对直线段可简弃之。(3)若上述两条件均不成立。则需求出直线段与窗口边界的交点。在交点处把线段一分为二,其中必有一段完全在窗口外,可以弃之。再对另一段重复进行上述处理,直到该线段完全被舍弃或者
13、找到位于窗口内的一段线段为止。,2023/8/10,59,求交:假定直线的端点坐标为(x1,y1)和(x2,y2)左、右边界交点的计算:上、下边界交点的计算:,2023/8/10,60,算法的步骤:(1)输入直线段的两端点坐标:p1(x1,y1)、p2(x2,y2),以及窗口的四条边界坐标:wyt、wyb、wxl和wxr。(2)对p1、p2进行编码:点p1的编码为code1,点p2的编码为code2。(3)若code1|code2=0,对直线段应简取之,转(6);否则,若code1&code20,对直线段可简弃之,转(7);当上述两条均不满足时,进行步骤(4)。(4)确保p1在窗口外部:若p1
14、在窗口内,则交换p1和p2的坐标值和编码。(5)按左、右、上、下的顺序求出直线段与窗口边界的交点,并用该交点的坐标值替换p1的坐标值。也即在交点s处把线段一分为二,并去掉p1s这一段。考虑到p1是窗口外的一点,因此可以去掉p1s。转(2)。(6)用直线扫描转换算法画出当前的直线段p1p2。(7)算法结束。,2023/8/10,61,例如:,特点:,2023/8/10,62,2.中点分割算法,基本思想:当对直线段不能简取也不能简弃时,简单地把线段等分为二段,对两段重复上述测试处理,直至每条线段完全在窗口内或完全在窗口外。,2023/8/10,63,算法步骤:(1)输入直线段的两端点坐标:p1(x
15、1,y1)、p2(x2,y2),以及窗口的四条边界坐标:wyt、wyb、wxl和wxr。(2)对p1、p2进行编码:点p1的编码为code1,点p2的编码为code2。(3)若code1|code2=0,对直线段应简取之,保留当前直线段的端点坐标,转(5);否则,若code1&code20,对直线段可简弃之,转(5);当上述两条均不满足时,进行步骤(4)。(4)求出直线段的中点M,将p1M、p2M入栈。(5)当栈不空时,从栈中弹出一条直线段,取为p1p2,转(2)进行处理。否则,继续(6)。(6)当栈为空时,合并保留的直线段端点,得到窗口内的直线段p1p2。用直线扫描转换算法画出当前的直线段p
16、1p2,算法结束。,2023/8/10,64,中点分割算法的核心思想是通过二分逼近来确定直线段与窗口的交点。,2023/8/10,65,重新构造算法步骤:(1)若code1|code2=0,对直线段应简取之,结束;否则,若code1&code20,对直线段可简弃之,结束;当这两条均不满足时,进行步骤(2)。(2)找出该直线段离窗口边界最远的点和该直线段的中点。判中点是否在窗口内:若中点不在窗口内,则把中点和离窗口边界最远点构成的线段丢掉,以线段上的另一点和该中点再构成线段求其中点;如中点在窗口内,则又以中点和最远点构成线段,并求其中点,直到中点与窗口边界的坐标值在规定的误差范围内相等,则该中点
17、就是该线段落在窗口内的一个端点坐标。(3)如另一点在窗口内,则经(2)即确定了该线段在窗口内的部分。如另一点不在窗口内,则该点和所求出的在窗口上的那一点构成一条线段,重复步骤(2),即可求出落在窗口内的另一点。,2023/8/10,66,例如:,特点:,2023/8/10,67,3.Liang-Barsky算法,分析,推导,2023/8/10,68,特殊处理:,2023/8/10,69,算法步骤:(1)输入直线段的两端点坐标:(x1,y1)和(x2,y2),以及窗口的四条边界坐标:wyt、wyb、wxl和wxr。(2)若x=0,则p1=p2=0。此时进一步判断是否满足q10且q20,则进一步计
18、算u1和u2。算法转(5)。(3)若y=0,则p3=p4=0。此时进一步判断是否满足q30且q20,则进一步计算u1和u2。算法转(5)。(4)若上述两条均不满足,则有pk0(k=1,2,3,4)。此时计算u1和u2。(5)求得u1和u2后,进行判断:若u1u2,则直线段在窗口外,算法转(7)。若u1u2,利用直线的参数方程求得直线段在窗口内的两端点坐标。(6)利用直线的扫描转换算法绘制在窗口内的直线段。算法结束。,2023/8/10,70,4.其它裁剪算法简介,Cohen-Sutherland算法、中点分割算法和Liang-Barsky算法Cyrus-Beck算法Nicholl-Lee-Ni
19、choll算法,2023/8/10,71,6.5.3 多边形的裁剪,问题的提出:,2023/8/10,72,1.Sutherland-Hodgeman多边形裁剪,基本思想,2023/8/10,73,2023/8/10,74,算法实施策略:为窗口各边界裁剪的多边形存储输入与输出顶点表。在窗口的一条裁剪边界处理完所有顶点后,其输出顶点表将用窗口的下一条边界继续裁剪。窗口的一条边以及延长线构成的裁剪线把平面分为两个区域,包含有窗口区域的一个域称为可见侧;不包含窗口区域的域为不可见侧。,2023/8/10,75,沿着多边形依次处理顶点会遇到四种情况:,2023/8/10,76,特点:,2023/8/1
20、0,77,2.Weiler-Atherton多边形裁剪假定按顺时针方向处理顶点,且将用户多边形定义为Ps,窗口矩形为Pw。算法从Ps的任一点出发,跟踪检测Ps的每一条边,当Ps与Pw相交时(实交点),按如下规则处理:(1)若是由不可见侧进入可见侧,则输出可见直线段,转(3);(2)若是由可见侧进入不可见侧,则从当前交点开始,沿窗口边界顺时针检测Pw的边,即用窗口的有效边界去裁剪Ps的边,找到Ps与Pw最靠近当前交点的另一交点,输出可见直线段和由当前交点到另一交点之间窗口边界上的线段,然后返回处理的当前交点;(3)沿着Ps处理各条边,直到处理完Ps的每一条边,回到起点为止。,2023/8/10,78,下图示了Weiler-Atherton算法裁剪凹多边形的过程和结果。,2023/8/10,79,6.5.4 其它裁剪,1.曲线边界对象的裁剪曲线边界对象与矩形窗口和多边形窗口的裁剪加速方法,2023/8/10,80,2.文字裁剪文字裁剪的策略包括几种:串精度裁剪字符精度裁剪笔划、象素精度裁剪3.外部裁剪保留落在裁剪区域外的图形部分、去掉裁剪区域内的所有图形,这种裁剪过程称为外部裁剪,也称空白裁剪。,2023/8/10,81,习题,