好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

维观察及裁剪.ppt

36页
  • 卖家[上传人]:博****1
  • 文档编号:586462426
  • 上传时间:2024-09-04
  • 文档格式:PPT
  • 文档大小:867KB
  • / 36 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 6.4 两维观察两维观察6.4.1 基本概念基本概念§在计算机图形学中,将在用户坐标系中需要进行观察和处理的一个坐标区域称为窗口窗口(Window)§将窗口映射到显示设备上的坐标区域称为视视区区(Viewport) 要将窗口内的图形在视区中显示出来,必须经过将窗口到视区的变换(Window-Viewport Transformation)处理,这种变换就是观察变换观察变换)) 观观察察坐坐标标系系(View Coordinate)和和规规格格化化设设备备坐坐标标系系(Normalized Device Coordinate)  l观观察察坐坐标标系系是依据窗口的方向和形状在用户坐标平面中定义的直角坐标系l规规格格化化设设备备坐坐标标系系也是直角坐标系,它是将二维的设备坐标系规格化到(0.0,0.0)到(1.0,1.0)的坐标范围内形成的 引入了观察坐标系和规格化设备坐标系后,观察变换分为如下图所示的几个步骤,通常称为二维观察流程二维观察流程   • 变焦距效果变焦距效果 • 整体放缩效果整体放缩效果§漫游效果漫游效果  6.4.3 窗口到视区的变换窗口到视区的变换 要将窗口内的点(xw,yw)映射到相对应的视区内的点(xv,yv)需进行以下步骤:(1) 将窗口左下角点移至用户系统系的坐标原点(2) 针对原点进行比例变换(3) 进行反平移 6.5 裁剪裁剪§在二维观察中,需要在观察坐标系下对窗口进行裁裁剪剪,即只保留窗口内的那部分图形,去掉窗口外的图形。

      §假假设设窗口是标准矩形,即边与坐标轴平行的矩形,由上(y=wyt)、下(y=wyb)、左(x=wxl)、右(x=wxr)四条边描述 6.5.1 点的裁剪点的裁剪(wxl,wyb)(wxr,wyt)P 6.5.2 直线段的裁剪直线段的裁剪假定假定直线段用p1(x1,y1)p2(x2,y2)表示§直线段和剪裁窗口的可能关系:l完全落在窗口内l完全落在窗口外l与窗口边界相交   §实交点实交点是直线段与窗口矩形边界的交点§虚虚交交点点则是直线段与窗口矩形边界延长线或直线段的延长线与窗口矩形边界的交点  1. Cohen-Sutherland算法算法基本思想基本思想:对每条直线段p1(x1,y1)p2(x2,y2)分三种情况处理:(1)  直线段完全可见,“简取”之2)  直线段完全不可见,“简弃”之3) 直线段既不满足“简取”的条件,也不满足“简弃”的条件,需要对直线段按交点进行分段,分段后重复上述处理  编编码码:对于任一端点(x,y),根据其坐标所在的区域,赋予一个4位的二进制码D3D2D1D0上下右左)编码规则如下:编码规则如下:§若若xwxr,,则则D1=1,,否则否则D1=0;;§若若ywyt,,则则D3=1,,否则否则D3=0。

        裁剪裁剪裁剪一条线段时,先求出端点p1和p2的编码code1和code2,然后:(1)若code1|code2=0,对直线段应简取之2)若code1&code2≠0,对直线段可简弃之3)若上述两条件均不成立则需求出直线段与窗口边界的交点在交点处把线段一分为二,其中必有一段完全在窗口外,可以弃之再对另一段重复进行上述处理,直到该线段完全被舍弃或者找到位于窗口内的一段线段为止 求交求交:假定直线的端点坐标为(x1,y1)和(x2,y2)§左、右边界交点的计算:§上、下边界交点的计算:  算法的步骤算法的步骤:(1)输入直线段的两端点坐标:p1(x1,y1)、p2(x2,y2),以及窗口的四条边界坐标:wyt、wyb、wxl和wxr2)对p1、p2进行编码:点p1的编码为code1,点p2的编码为code23)若 code1|code2=0, 对 直 线 段 应 简 取 之 , 转 (6); 否 则 , 若code1&code2≠0,对直线段可简弃之,转(7);当上述两条均不满足时,进行步骤(4)4)确保p1在窗口外部:若p1在窗口内,则交换p1和p2的坐标值和编码5)按按左左、、右右、、上上、、下下的的顺顺序序求求出出直直线线段段与与窗窗口口边边界界的的交交点点,并用该交点的坐标值替换p1的坐标值。

      也也即即在在交交点点s处处把把线线段段一一分分为为二二,,并并去去掉掉p1s这这一一段段考虑到p1是窗口外的一点,因此可以去掉p1s转(2)6)用直线扫描转换算法画出当前的直线段p1p27)算法结束  例如例如:  特点特点:  2. 中点分割算法中点分割算法基本思想基本思想:   当对直线段不能简取也不能简弃时,简单地把线段等分为二段,对两段重复上述测试处理,直至每条线段完全在窗口内或完全在窗口外  中点分割算法的核心思想核心思想是通过二分逼近来确定直线段与窗口的交点 与Cohen-Sutherland算法一样首先对线段端点进行编码,并把线段与窗口的关系分为三种情况,对前两种情况,进行一样的处理;对于第三种情况,用中点分割的方法求出线段与窗口的交点A、B分别为距P0 、 P1最近的可见点,Pm为P0P1中点特点:以求直线的中点来代替求两直线的交点,只需进行整数的简单加法和运算器右移实现除法,避免做大量的乘除法 从P0出发找距离P0最近可见点采用中点分割方法先求出P0P1的中点Pm,若P0Pm不是显然不可见的,并且P0P1在窗口中有可见部分,则距P0最近的可见点一定落在P0Pm上,所以用P0Pm代替P0P1;否则取PmP1代替P0P1。

      再对新的P0P1求中点Pm重复上述过程,直到PmP1长度小于给定的控制常数为止,此时Pm收敛于交点从P1出发找距离P1最近可见点采用上面类似方法 6.5.3 多边形的裁剪多边形的裁剪问题的提出:  •多边形的裁剪比直线的裁剪要复杂多边形的裁剪比直线的裁剪要复杂::1)边界不再封闭,需要用窗口边界的恰当部分来封闭它,如何确定其边界? 算法实施策略算法实施策略:§为窗口各边界裁剪的多边形存储输入与输出顶点表在窗口的一条裁剪边界处理完所有顶点后,其输出顶点表将用窗口的下一条边界继续裁剪§窗口的一条边以及延长线构成的裁剪线把平面分为两个区域,包含有窗口区域的一个域称为可可见见侧侧;不包含窗口区域的域为不可见侧不可见侧1. Sutherland-Hodgeman多边形裁剪多边形裁剪 沿着多边形依次处理顶点会遇到四种情况: 逐边裁剪法逐边裁剪法,基本思想,基本思想一次用窗口的一条边裁剪多边形输入:ABCDEFGHABCDEFGH输出:12DEFGHA12(a)用左边界裁剪输出:34D56FGHA1ADEFGH 输入: 12DEFGHA12(b)用下边界裁剪3456 输入: 34D56FGHA1ADFGH1(c)用右边界裁剪3456输出:4D5678GHA1378ADGH1(d)用上边界裁剪345678输入: 4D5678GHA13输出:D56789IHJK349IJK 缺点:S-H法可以处理凸多边形和凹多边形的裁剪,但只能对裁剪后仍为一个连通图的凹多边形产生正确的裁剪效果。

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

      作业:P177     6.16      6.17 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.