资源描述:
《《维观察及裁剪》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、6.4两维观察6.4.1基本概念在计算机图形学中,将在用户坐标系中需要进行观察和处理的一个坐标区域称为窗口(Window)将窗口映射到显示设备上的坐标区域称为视区(Viewport)要将窗口内的图形在视区中显示出来,必须经过将窗口到视区的变换(Window-ViewportTransformation)处理,这种变换就是观察变换)。观察坐标系(ViewCoordinate)和规格化设备坐标系(NormalizedDeviceCoordinate)观察坐标系是依据窗口的方向和形状在用户坐标平面中定义的直角坐标系。规格化设
2、备坐标系也是直角坐标系,它是将二维的设备坐标系规格化到(0.0,0.0)到(1.0,1.0)的坐标范围内形成的。引入了观察坐标系和规格化设备坐标系后,观察变换分为如下图所示的几个步骤,通常称为二维观察流程。变焦距效果整体放缩效果漫游效果6.4.3窗口到视区的变换要将窗口内的点(xw,yw)映射到相对应的视区内的点(xv,yv)需进行以下步骤:(1)将窗口左下角点移至用户系统系的坐标原点(2)针对原点进行比例变换(3)进行反平移6.5裁剪在二维观察中,需要在观察坐标系下对窗口进行裁剪,即只保留窗口内的那部分图形,去掉窗口
3、外的图形。假设窗口是标准矩形,即边与坐标轴平行的矩形,由上(y=wyt)、下(y=wyb)、左(x=wxl)、右(x=wxr)四条边描述。6.5.1点的裁剪(wxl,wyb)(wxr,wyt)P6.5.2直线段的裁剪假定直线段用p1(x1,y1)p2(x2,y2)表示。直线段和剪裁窗口的可能关系:完全落在窗口内完全落在窗口外与窗口边界相交实交点是直线段与窗口矩形边界的交点。虚交点则是直线段与窗口矩形边界延长线或直线段的延长线与窗口矩形边界的交点。1.Cohen-Sutherland算法基本思想:对每条直线段p1(x1,
4、y1)p2(x2,y2)分三种情况处理:(1)直线段完全可见,“简取”之。(2)直线段完全不可见,“简弃”之。(3)直线段既不满足“简取”的条件,也不满足“简弃”的条件,需要对直线段按交点进行分段,分段后重复上述处理。编码:对于任一端点(x,y),根据其坐标所在的区域,赋予一个4位的二进制码D3D2D1D0。(上下右左)编码规则如下:若xwxr,则D1=1,否则D1=0;若ywyt,则D3=1,否则D3=0。裁剪裁剪一条线段时,先求出端
5、点p1和p2的编码code1和code2,然后:(1)若code1
6、code2=0,对直线段应简取之。(2)若code1&code2≠0,对直线段可简弃之。(3)若上述两条件均不成立。则需求出直线段与窗口边界的交点。在交点处把线段一分为二,其中必有一段完全在窗口外,可以弃之。再对另一段重复进行上述处理,直到该线段完全被舍弃或者找到位于窗口内的一段线段为止。求交:假定直线的端点坐标为(x1,y1)和(x2,y2)左、右边界交点的计算:上、下边界交点的计算:算法的步骤:(1)输入直线段的两端点坐标:p1(x1,y1)、p2
7、(x2,y2),以及窗口的四条边界坐标:wyt、wyb、wxl和wxr。(2)对p1、p2进行编码:点p1的编码为code1,点p2的编码为code2。(3)若code1
8、code2=0,对直线段应简取之,转(6);否则,若code1&code2≠0,对直线段可简弃之,转(7);当上述两条均不满足时,进行步骤(4)。(4)确保p1在窗口外部:若p1在窗口内,则交换p1和p2的坐标值和编码。(5)按左、右、上、下的顺序求出直线段与窗口边界的交点,并用该交点的坐标值替换p1的坐标值。也即在交点s处把线段一分为二,并去掉p1
9、s这一段。考虑到p1是窗口外的一点,因此可以去掉p1s。转(2)。(6)用直线扫描转换算法画出当前的直线段p1p2。(7)算法结束。例如:特点:2.中点分割算法基本思想:当对直线段不能简取也不能简弃时,简单地把线段等分为二段,对两段重复上述测试处理,直至每条线段完全在窗口内或完全在窗口外。中点分割算法的核心思想是通过二分逼近来确定直线段与窗口的交点。与Cohen-Sutherland算法一样首先对线段端点进行编码,并把线段与窗口的关系分为三种情况,对前两种情况,进行一样的处理;对于第三种情况,用中点分割的方法求出线段与
10、窗口的交点。A、B分别为距P0、P1最近的可见点,Pm为P0P1中点。特点:以求直线的中点来代替求两直线的交点,只需进行整数的简单加法和运算器右移实现除法,避免做大量的乘除法从P0出发找距离P0最近可见点采用中点分割方法先求出P0P1的中点Pm,若P0Pm不是显然不可见的,并且P0P1在窗口中有可见部分,则距P0最近的可见点一定落