资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。本资料仅供参考,不能作为科学依据。谢谢。本资料仅供参考,不能作为科学依据。,第6章,二维变换及二维观察,本章要处理问题,怎样对二维图形进行方向、尺寸和形状方面变换,怎样方便地实现在显示设备上对二维图形进行观察,1/100,6.1 基本概念,齐次坐标,用n+1维向量表示一个n维向量,齐次坐标表示法,(,P,1,P,2,Pn,),(,hP,1,hP,2,,,hPn,h,),h,称为哑坐标,2/100,说明:,h,能够取不一样值,所以同一点齐次坐标不是唯一。,(2,3),(1,1.5,0.5)(4,6,2)(6,9,3)等等。,普通坐标与齐次坐标关系为“一对多”,由普通坐标,h,齐次坐标,由齐次坐标,h,普通坐标,当h=1时产生齐次坐标称为“规格化坐标”,,因为前,n,个坐标就是普通坐标系下,n,维坐标。,3/100,(x,y)点对应齐次坐标为,(x,y)点对应齐次坐标为三维空间一条直线,4/100,规范化齐次坐标作用:,可将图形变换表示为图形点集规范化次坐标矩阵与某一变换矩阵相乘形式。,如:,5/100,几何变换,对图形几何信息经过平移、百分比、旋转等变换后产生新图形,是图形在方向、尺寸和形状方面变换。,6/100,二维变换矩阵,二维空间中某点变换能够表示成点齐次坐标与3阶,二维变换矩阵,T,2D,相乘:,二维变换矩阵,7/100,6.2 基本几何变换,相对于坐标原点和坐标轴进行几何变换。,平移变换,将p点沿直线路径从一个坐标位置移到另一个坐标位置重定位过程。,平移是一个不产生变形而移动物体刚体变换。,8/100,T,x,,T,y,称为,平移矢量,变换矩阵,9/100,例:已知点P(20,30),求平移(T,x,=20,T,y,=15)后坐标。,10/100,百分比变换,对p点相对于坐标原点沿x方向放缩S,x,倍,沿y方向放缩S,y,倍。其中S,x,和S,y,称为,百分比系数,。,11/100,变换矩阵,以坐标原点为放缩参考点,12/100,旋转变换,将p点绕坐标原点转动某个角度(逆时针为正,顺时针为负)得到新点p重定位过程。,13/100,逆时针旋转角,(x,y),(x,y,),14/100,例:求P(2,1)逆时针旋转30,后坐标。,15/100,当很小时,简化计算:,16/100,对称变换,原图形关于某一轴线或原点镜像。,17/100,18/100,当,b,=,d,=0,a,=1,e,=-1时,,与,x,轴对称,:,19/100,当,b,=,d,=0,a,=-1,e,=1时,与,y,轴对称,:,20/100,当,b,=,d,=0,a,=,e,=-1时,与,原点对称,:,21/100,当,b,=,d,=1,a,=,e,=0时,与,y,=,x,对称,:,22/100,当,b,=,d,=-1,a,=,e,=0时,与,y,=-,x,对称:,23/100,错切变换,也称为剪切、错位变换,用于产生弹性物体变形处理。,24/100,1)当b=0时,图形,y,坐标不变;,当c0:图形沿+,x,方向作错切位移。,当,c,0:图形沿+,y,方向作错切位移。,当b0:图形沿-,y,方向作错切位移。,25/100,二维图形几何变换计算,几何变换均可表示成P=P*T形式,1.点变换,2.直线变换,3.多边形变换,4.曲线变换,26/100,6.3 复合变换,图形作一次以上几何变换,变换结果是每次变换矩阵相乘。,任何一复杂几何变换都能够看作基本几何变换组合形式。,复合变换含有形式:,27/100,二维复合平移,P,(,x,y,),P,(,x,y,1),P,*(,x,*,y,*1),(,Tx,1,Ty,1),(,Tx,2,Ty,2),28/100,29/100,得到二维复合平移矩阵:,相加性,30/100,二维复合百分比,P,(,x,y,),P,(,x,y,1),P,*(,x,*,y,*1),(S,x,1,S,y,1),(S,x2,S,y2,),31/100,32/100,二维复合百分比矩阵:,相乘性,33/100,二维复合旋转,1,2,P,(,x,y,),P,(,x,y,1),P,*(,x,*,y,*1),34/100,35/100,二维复合旋转矩阵:,相加性,36/100,二维各种复合变换,例:将P(2,3)平移(Tx=5,Ty=6)后再百分比(Sx=2,Sy=0.5)变换。,37/100,相对任一参考点二维几何变换,相对某个参考点,(x,F,y,F,),作二维几何变换,其变换过程为:,(分解成基本几何变换),(1)平移。,(2)针对原点进行二维几何变换。,(3)反平移。,38/100,例1.,相对点(x,F,y,F,)旋转变换,T(-X,F,-Y,F,),R(),T(X,F,Y,F,),30,(1,1),(2.5,1.5),(Xp,Yp),T(-1,-1),R(30,),T(1,1),39/100,40/100,41/100,例2.,相对点(x,F,y,F,)百分比变换,T(-X,F,-Y,F,),S(S,x,S,y,),T(X,F,Y,F,),(1,1),(2,1.5),(Xp,Yp),T(-1,-1),S(2,2.5),T(1,1),S,x,=2,S,y,=2.5,42/100,相对任意方向二维几何变换,相对任意方向作二维几何变换,其变换过程是:,(1)旋转变换,(2)针对坐标轴进行二维几何变换;,(3)反向旋转,43/100,例3.,相对直线y=x反射变换,将直线顺时针旋转,角:,图形关于,x,轴反射变换:,(x,y),44/100,将(x,y)逆时针旋转,角:,(x,y),可得复合变换矩阵:,45/100,坐标系之间变换,问题,:,46/100,能够分两步进行:,47/100,于是:,48/100,假定x,p,=3,y,p,=4,x0=1,y0=1,Q=30,则:,49/100,小结,1.任何几何变换都能够由齐次坐标向量与对应变换矩阵相乘表示,不一样变换归结为寻找其对应变换矩阵。,2.复合变换能够看成一系列基本几何变换合成,将这一系列基本几何变换变换矩阵相乘得到复合变换矩阵。,50/100,光栅变换,直接对帧缓存中象素点进行操作变换。,光栅平移变换:,51/100,90、180和270光栅旋转变换:,先颠倒每行像素值,,后交换行列,先颠倒每行像素值,,后颠倒行次序,52/100,任意角度光栅旋转变换:,53/100,光栅百分比变换:,54/100,6.4 两维观察,基本概念,窗口(Window),在用户坐标系中需要进行观察和处理一个坐标区域。,视区(Viewport),窗口映射到显示设备上坐标区域。,55/100,要将窗口内图形显示到视区中,必须经过将窗口到视区变换(Window-Viewport Transformation)处理,这种变换称,观察变换,(Viewing Transformation)。,56/100,观察坐标系,依据窗口方向和形状在用户坐标平面中定义直角坐标系。,x用户,y,用,户,窗口,y,观,察,x,观,察,(a)观察坐标系,引入观察坐标系目标:简化窗口到视区变换。,57/100,规格化设备坐标:,将二维设备坐标系规格化到(0.0,0.0)到(1.0,1.0)坐标范围内形成坐标系。,x用户,y,用,户,窗口,y,观,察,x,观,察,(a)观察坐标系,1,xNDC,y,N,D,C,视区,1,(b)规格化设备坐标系,引入规格化坐标系目标:使观察变换独立于设备。,58/100,引入了观察坐标系和规格化设备坐标系后,观察变换分为以下列图所表示几个步骤,通常称为,二维观察流程,。,59/100,二维观察流程设置,为图形观察提供了非常灵活方式:,变焦距效果,60/100,整体放缩效果,漫游效果:,经过移动窗口。,61/100,用户坐标系到观察坐标系变换,由两个变换步骤合成:,将观察坐标系原点移到用户坐标系原点。,62/100,绕原点旋转使两坐标系重合。,63/100,窗口到视区变换,64/100,要将窗口内点(x,w,y,w,)映射到相对应视区内点(x,v,y,v,)需进行以下步骤:,将窗口左下角点移至观察坐标系原点。,针对原点进行百分比变换。,进行反平移。,65/100,6.5 裁剪,在二维观察中,需要在观察坐标系下对窗口进行裁剪,即只,保留窗口内那部分图形,去掉窗口外图形,。,假设窗口是标准矩形,即边与坐标轴平行矩形。,(wxl,wyt)(wxr,wyb),66/100,点裁剪,保留满足以下条件点:,67/100,直线段裁剪,假定直线段用p,1,(x,1,y,1,)p,2,(x,2,y,2,)表示。,直线段和剪裁窗口可能关系:,完全落在窗口内,完全落在窗口外,与窗口边界相交,68/100,实交点,:与窗口边界交点。,虚交点,:与窗口边界延长线交点,,或延长线与窗口边界交点。,69/100,Cohen-Sutherland算法,编码裁剪算法,基本思想:,对每条直线段p,1,p,2,分三种情况处理:,直线段完全可见,“简取”之。,直线段完全不可见,“简弃”之。,直线段既非“简取”又非“简弃”,需对直线段按交点进行分段,分段后重复上述处理。,70/100,编码,:,对于任一端点(x,y),依据其坐标所在区域,赋予一个4位二进制码D,3,D,2,D,1,D,0,。,编码规则以下:,若xwxr,则D,1,=1,不然D,1,=0;,若ywyt,则D,3,=1,不然D,3,=0。,71/100,裁剪:,裁剪一条线段时,先求出端点p,1,和p,2,编码code1和code2,然后:,若code1|code2=0:,简取。,若code1&code20:,简弃。,72/100,不然:,求直线段与窗口边界交点,弃外段。再对另一段重复进行上述处理,。,73/100,求交,:,假定直线端点为(x,1,y,1,)和(x,2,y,2,),左、右边界交点计算:,上、下边界交点计算:,74/100,算法步骤:,输入直线段两端点坐标:p,1,(x,1,y,1,)、p,2,(x,2,y,2,),以及窗口四条边界坐标:wyt、wyb、wxl和wxr。,对p,1,、p,2,进行编码:点p,1,编码为code1,点p,2,编码为code2。,75/100,若code1|code2=0,简取之,转;不然,若code1&code20,简弃之,转;当上述两条均不满足时,进行步骤。,确保p,1,在窗口外部:若p,1,在窗口内,则交换p,1,和p,2,坐标值和编码。,76/100,按左、右、下、上次序求出直线段与窗口边界交点,并用该交点坐标值替换p,1,坐标值。去掉p,1,s这一段。转。,画当前直线段p,1,p,2,。,算法结束。,77/100,算法特点:,对完全可见或完全不可见线段:,快速,。,尤其适合用于大窗口情况。,78/100,中点分割算法,基本思想:,当对直线段不能简取也不能简弃时,简单地把线段等分为二段,对两段重复前述测试处理,直至每条线段完全在窗口内或完全在窗口外。,79/100,算法步骤:,输入直线段两端点坐标:p,1,(x,1,y,1,)、p,2,(x,2,y,2,),以及窗口四条边界坐标:wyt、wyb、wxl和wxr。,对p,1,、p,2,进行编码:点p,1,编码为code1,点p,2,编码为code2。,80/100,若code1|code2=0,简取之,保留端点坐标,转;不然,若code1&code20,简弃之,转;当上述两条均不满足时,进行步骤。,求出直线段中点M,将p,1,M、p,2,M入栈,。,81/100,当栈不空时,从栈中弹出一条直线段,取为p,1,p,2,,转进行处理。不然,继续。,当栈为空时,合并保留直线段端点,得到窗口内直线段p,1,p,2,。画出当前直线段p,1,p,2,,算法结束。,82/100,中点分割算法关键思想是,经过二分迫最近确定直线段与窗口交点,。,重新结构,算法步骤,:,若code1|code2=0,对直线段应简取之,结束;不然,若code1&code20,对直线段可简弃之,结束;当这两条均不满足时,进行步骤。,83/100,找出该直线段离窗口边界最远点和该直线段中点。,判中点是否在窗口内,:,若不在,则把中点和离窗口边界最远点组成线段丢掉,以线段上另一点和该中点再组成线段求其中点;如中点在窗口内,则又以中点和最远点组成线段,并求其中点,直到中点,靠近,窗口边界,则该中点就是该线段落在窗口内一个端点坐标。,如另一点在窗口内,则经,即确定了该线段在窗口内部分。如另一点不在窗口内,则该点和所求出在窗口上那一点组成一条线段,重复步骤,,即可求出落在窗口内另一点。,84/100,算法特点:,只用到加法和位移运算,便于用硬件实现。,85/100,梁友栋,-Barsky,算法,设要裁剪线段是P,0,P,1,。P,0,P,1,和窗口边界交于A,B,C,D四点。,算法基本思想是:,从A,B和P,0,三点中找出最靠近P,1,点(P,0,)。从C,D和P,1,中找出最靠近P,0,点(C)。那么P,0,C就是P,0,P,1,线段上可见部分。,86/100,线段参数表示:,x=x,0,+tx,y=y,0,+ty 0=t t,L,则可见线段区间,t,L,t,u,t,0,t,1,t,2,t,3,0,88/100,多边形裁剪,问题提出:,不但裁线条,要处理好多边形拓朴关系,89/100,Sutherland-Hodgeman多边形裁剪,逐边裁剪算法,基本思想,:每次用窗口一条边对多边形进行裁剪。,90/100,91/100,算法实施策略:,为窗口各边界裁剪多边形存放输入与输出顶点表。在窗口一条裁剪边界处理完全部顶点后,其输出顶点表将用窗口下一条边界继续裁剪。,窗口一条边以及延长线组成裁剪线把平面分为两个区域,包含有窗口区域一个域称为可见侧;不包含窗口区域域为不可见侧。,92/100,沿着多边形依次处理顶点会碰到四种情况:,93/100,特点,:,适合用于凸多边形,对凹多边形裁剪要作特殊处理。,94/100,Weiler-Atherton多边形裁剪,双边裁剪算法,假定,按顺时针方向处理顶点,且将用户多边形定义为Ps,窗口矩形为Pw。算法从Ps任一点出发,跟踪检测Ps每一条边,当Ps与Pw相交时(实交点),按以下规则处理:,(1),若是由不可见侧进入可见侧,则输出可见直线段,转(3);,95/100,(2),若是由可见侧进入不可见侧,则从当前交点开始,沿窗口边界顺时针检测Pw边,即用窗口有效边界去裁剪Ps边,找到Ps与Pw最靠近当前交点另一交点,输出可见直线段和由当前交点到另一交点之间窗口边界上线段,然后返回处理当前交点;,(3),沿着Ps处理各条边,直处处理完Ps每一条边,回到起点为止。,96/100,下列图示了Weiler-Atherton算法裁剪凹多边形过程和结果。,97/100,其它裁剪,曲线边界对象裁剪,曲线边界对象与矩形窗口和多边形窗口裁剪,加速方法,98/100,文字裁剪,文字裁剪策略包含几个:,串精度裁剪,字符精度裁剪,笔划、象素精度裁剪,ABCDEF,99/100,外部裁剪,保留落在裁剪区域外图形部分、去掉裁剪区域内全部图形,这种裁剪过程称为,外部裁剪,,也称,空白裁剪,。,100/100,
展开阅读全文