第6章2二维观察及裁剪.ppt

上传人:本田雅阁 文档编号:2980102 上传时间:2019-06-17 格式:PPT 页数:36 大小:842.01KB
返回 下载 相关 举报
第6章2二维观察及裁剪.ppt_第1页
第1页 / 共36页
第6章2二维观察及裁剪.ppt_第2页
第2页 / 共36页
第6章2二维观察及裁剪.ppt_第3页
第3页 / 共36页
第6章2二维观察及裁剪.ppt_第4页
第4页 / 共36页
第6章2二维观察及裁剪.ppt_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《第6章2二维观察及裁剪.ppt》由会员分享,可在线阅读,更多相关《第6章2二维观察及裁剪.ppt(36页珍藏版)》请在三一文库上搜索。

1、6.4 两维观察,6.4.1 基本概念 在计算机图形学中,将在用户坐标系中需要进行观察和处理的一个坐标区域称为窗口(Window) 将窗口映射到显示设备上的坐标区域称为视区(Viewport),要将窗口内的图形在视区中显示出来,必须经过将窗口到视区的变换(Window-Viewport Transformation)处理,这种变换就是观察变换)。,观察坐标系(View Coordinate)和规格化设备坐标系(Normalized Device Coordinate) 观察坐标系是依据窗口的方向和形状在用户坐标平面中定义的直角坐标系。 规格化设备坐标系也是直角坐标系,它是将二维的设备坐标系规格

2、化到(0.0,0.0)到(1.0,1.0)的坐标范围内形成的。,引入了观察坐标系和规格化设备坐标系后,观察变换分为如下图所示的几个步骤,通常称为二维观察流程。,变焦距效果,整体放缩效果,漫游效果,6.4.3 窗口到视区的变换,要将窗口内的点(xw,yw)映射到相对应的视区内的点(xv,yv)需进行以下步骤: (1) 将窗口左下角点移至用户系统系的坐标原点 (2) 针对原点进行比例变换 (3) 进行反平移,6.5 裁剪,在二维观察中,需要在观察坐标系下对窗口进行裁剪,即只保留窗口内的那部分图形,去掉窗口外的图形。 假设窗口是标准矩形,即边与坐标轴平行的矩形,由上(y=wyt)、下(y=wyb)、

3、左(x=wxl)、右(x=wxr)四条边描述。,6.5.1 点的裁剪,6.5.2 直线段的裁剪,假定直线段用p1(x1,y1)p2(x2,y2)表示。 直线段和剪裁窗口的可能关系: 完全落在窗口内 完全落在窗口外 与窗口边界相交,实交点是直线段与窗口矩形边界的交点。 虚交点则是直线段与窗口矩形边界延长线或直线段的延长线与窗口矩形边界的交点。,1. Cohen-Sutherland算法 基本思想:对每条直线段p1(x1,y1)p2(x2,y2)分三种情况处理: (1) 直线段完全可见,“简取”之。 (2) 直线段完全不可见,“简弃”之。 (3) 直线段既不满足“简取”的条件,也不满足“简弃”的条

4、件,需要对直线段按交点进行分段,分段后重复上述处理。,编码:对于任一端点(x,y),根据其坐标所在的区域,赋予一个4位的二进制码D3D2D1D0。(上下右左) 编码规则如下: 若xwxr,则D1=1,否则D1=0; 若ywyt,则D3=1,否则D3=0。,裁剪,裁剪一条线段时,先求出端点p1和p2的编码code1和code2,然后: (1)若code1|code2=0,对直线段应简取之。 (2)若code1&code20,对直线段可简弃之。 (3)若上述两条件均不成立。则需求出直线段与窗口边界的交点。在交点处把线段一分为二,其中必有一段完全在窗口外,可以弃之。再对另一段重复进行上述处理,直到该

5、线段完全被舍弃或者找到位于窗口内的一段线段为止。,求交:假定直线的端点坐标为(x1,y1)和(x2,y2) 左、右边界交点的计算: 上、下边界交点的计算:,算法的步骤: (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在窗口内,则交换p1和

6、p2的坐标值和编码。 (5)按左、右、上、下的顺序求出直线段与窗口边界的交点,并用该交点的坐标值替换p1的坐标值。也即在交点s处把线段一分为二,并去掉p1s这一段。考虑到p1是窗口外的一点,因此可以去掉p1s。转(2)。 (6)用直线扫描转换算法画出当前的直线段p1p2。 (7)算法结束。,例如:,特点:,2. 中点分割算法,基本思想: 当对直线段不能简取也不能简弃时,简单地把线段等分为二段,对两段重复上述测试处理,直至每条线段完全在窗口内或完全在窗口外。,中点分割算法的核心思想是通过二分逼近来确定直线段与窗口的交点。,与Cohen-Sutherland算法一样首先对线段端点进行编码,并把线段

7、与窗口的关系分为三种情况,对前两种情况,进行一样的处理;对于第三种情况,用中点分割的方法求出线段与窗口的交点。A、B分别为距P0 、 P1最近的可见点,Pm为P0P1中点。 特点:以求直线的中点来代替求两直线的交点,只需进行整数的简单加法和运算器右移实现除法,避免做大量的乘除法,从P0出发找距离P0最近可见点采用中点分割方法 先求出P0P1的中点Pm, 若P0Pm不是显然不可见的,并且P0P1在窗口中有可见部分,则距P0最近的可见点一定落在P0Pm上,所以用P0Pm代替P0P1; 否则取PmP1代替P0P1。 再对新的P0P1求中点Pm。重复上述过程,直到PmP1长度小于给定的控制常数为止,此

8、时Pm收敛于交点。 从P1出发找距离P1最近可见点采用上面类似方法。,6.5.3 多边形的裁剪,问题的提出:,多边形的裁剪比直线的裁剪要复杂: 1)边界不再封闭,需要用窗口边界的恰当部分来封闭它, 如何确定其边界?,算法实施策略: 为窗口各边界裁剪的多边形存储输入与输出顶点表。在窗口的一条裁剪边界处理完所有顶点后,其输出顶点表将用窗口的下一条边界继续裁剪。 窗口的一条边以及延长线构成的裁剪线把平面分为两个区域,包含有窗口区域的一个域称为可见侧;不包含窗口区域的域为不可见侧。,1. Sutherland-Hodgeman多边形裁剪,沿着多边形依次处理顶点会遇到四种情况:,逐边裁剪法,基本思想一次

9、用窗口的一条边裁剪多边形,缺点:S-H法可以处理凸多边形和凹多边形的裁剪,但只能对裁剪后仍为一个连通图的凹多边形产生正确的裁剪效果。对裁剪后产生两个或多个分离部分的凹多边形会产生一些多余的边。,A,E,D,C,B,A,E,D,C,B,V1,V2,V3,V4,F,F,输出:A -V1-V4-D-E-V3-V2-A,输入:A -B-C-D-E-F-A,2. Weiler-Atherton多边形裁剪 假定按顺时针方向处理顶点,且将用户多边形定义为Ps,窗口矩形为Pw。算法从Ps的任一点出发,跟踪检测Ps的每一条边,当Ps与Pw相交时(实交点),按如下规则处理: (1)若是由不可见侧进入可见侧,则输出

10、可见直线段,转(3); (2)若是由可见侧进入不可见侧,则从当前交点开始,沿窗口边界顺时针检测Pw的边,即用窗口的有效边界去裁剪Ps的边,找到Ps与Pw最靠近当前交点的另一交点,输出可见直线段和由当前交点到另一交点之间窗口边界上的线段,然后返回处理的当前交点; (3)沿着Ps处理各条边,直到处理完Ps的每一条边,回到起点为止。,下图示了Weiler-Atherton算法裁剪凹多边形的过程和结果。,6.5.4 其它裁剪,1. 曲线边界对象的裁剪 曲线边界对象与矩形窗口和多边形窗口的裁剪 加速方法,2.字符裁剪,串精度:将包围字串的外接矩形对窗口作裁剪 字符精度:将包围字的外接矩形对窗口作裁剪 以及笔画象素精度:将笔划分解成直线段对窗口作裁剪 待裁剪字符串 串精度裁剪 字符精度裁剪 象素精度裁剪,3. 外部裁剪 保留落在裁剪区域外的图形部分、去掉裁剪区域内的所有图形,这种裁剪过程称为外部裁剪,也称空白裁剪。,作业:,P177 6.16 6.17,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1