本章总结第3章图形裁剪.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2002年10月24日 计算机图形学 上海交通大学计算机系 何援军 第3章 图形裁剪 裁剪(Clipping)问题是计算机图形学的基本问题之一。 许多工程应用中,往往对于一张大的画面要求开一个窗口来显示窗口内的画面。例如,对一条万吨级的轮船的型线(肋骨线等)开一个矩形的窗口,而按1:1的比例将窗口内的部分绘制出来(分块绘图),从而检查其线型的质量如何; 或者由于显示屏是有限的,只能显示出画面的一部分而放弃显示屏外的那部分等等。 裁剪的边界可以是任意多边形,但常用的裁剪边界是矩形,例如显示屏幕。 被裁剪的对象可以是线段、圆弧段、符号、多角形以及由他们构成的各种图形。 线段裁剪是图形裁剪的基础。 裁剪算法的核心问题是速度问题。 对一条被裁剪线段,就是要迅速而准确地判定:它是全部在窗口内还是窗口外; 或当线段部分在内部时,要较快地找出它与窗口边界的交点,确定窗口内的部分。 线裁剪算法 Cohen-Sutherland 的编码算法 梁友栋-Barsky算法 多边形裁剪 Sutherland-Hodgon多边形裁剪算法 (图形求交集多边形裁剪法) 3.1线裁剪算法 直线段与一窗口的位置关系是线段被窗口边界分割成: 一段可见部分(a,b,c) 或一段(a)或两段( b)不可见部分 或无可见部分(d,e) 由于窗口是一个凸多边形,因此,可见部分最多为一段 直线段的可见部分可简单地由决定两个端点位置的方法确定 3.1.1 Cohen-Sutherland 的编码算法 此算法自1968年以来被公认为是一个好的算法。 整个算法基于下述考虑:每一线段 或者整个地位于窗口的内部 或者能够被分割而使其中的一部分能很快地被删去。 算法由两部分构成: 第一步判断直线段是否整个地位于窗口的内部,否则判断它是否整个地位于窗口的外部; 如果第一步的判断均不成立,那么就通过窗口边界所在的直线将所在线段分成二部分,再对每一部分进行第一步的测试。 3.1.1 Cohen-Sutherland 的编码算法 把窗口的边界延长成直线,窗口平面就分成9个区,每一个区设定一个4位的编码与之对应。 平面上每一直线段的端点根据其所在的区域都可定义出两个编码。 编码(以二进制形式自右至左给出)的意义如下: 3.1.1 Cohen-Sutherland 的编码算法 如果两个端点的编码均为0,则线段全部位于窗口的内部(c); 如果两个端点的编码的位逻辑积不为0,则线段全部位于窗口的外部(e,d); 3.1.1 Cohen-Sutherland 的编码算法 如果线段的位置不能由上述两种测试简单的决定,则线段可能被分割(a、b及d’)。 3.1.1 Cohen-Sutherland 的编码算法 一个简单的办法就是找到线段和窗口某一边(边界的延长线)的交点,删去其中位于窗口外的一段; 对线段AD进行裁剪,可以在C点分割,舍弃AC,留下CD; CD仍不能作整段判断,再分割于B点,找到BD是整个地位于窗口内部,算法结束。 3.1.1 Cohen-Sutherland 的编码算法 此方法直观而方便,速度也较快。但是, 由于采用数字位逻辑乘的运,对程序实现有特殊要求 全部摒弃的判断只适合于那些仅在窗口同一侧(或左、或右、或上、或下)的线段 3.1.2 梁友栋-Barsky算法 此算法的主要特色是: 把二维裁剪的问题化成二次一维裁剪问题,而把裁剪问题转化为解一组不等式的问题; 改善了Cohen-Sutherland 的编码算法中全部摒弃的判断只适合于那些仅在窗口同一侧(或左、或右、或上、或下) 线段的不足。 算法分成一维和二维两部分,前者是后者的基础。 3.1.2 梁-Barsky算法——一维裁剪 一维裁剪的本质是求取两条线段的公共部分。 线段P1P2与一维窗口W1W2的位置分布 (未列出重端点状况) 3.1.2 梁-Barsky算法——一维裁剪 设W1W2为一维窗口,P1P2是给定的线段,则P1P2在一维窗口W1W2内的可见部分为: S=W1W2∩P1P2 令w1,w2和x1,x2分别为W1,W2和P1,P2点的坐标,则P1P2至少部分可见的充要条件是: max(min(x1,x2), min(w1,w2)) ≤ min(max(x1,x2), max(w1,w2)) (假设线段和窗口均从左至右排列,可简写为:max(x1 , w1) ≤ min(x2,w2) ) 即: 线段和窗口:左端点中大者≤右端点中小者 3.1.2 梁-Barsky算法——二维裁剪原理 二维裁剪算法的本质是:如何把二维裁剪的问题化成二次一维裁剪。 设二维窗口为下列方程所确定: x=XL x=XR (记XL≤x≤XR的区域为Δx) y=YB y=YT (记YB≤y≤

文档评论(0)

xinfeiyang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档