计算机图形学课件 第14讲 直线的裁剪.pptVIP

计算机图形学课件 第14讲 直线的裁剪.ppt

  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文档。上传文档
查看更多
计算机图形学课件 第14讲 直线的裁剪

信息科学与工程学院 1999年7月 6.5 裁剪 在二维观察中,需要在观察坐标系下对窗口进行裁剪,即只保留窗口内的那部分图形,去掉窗口外的图形。 裁减的实质:判断一个图形元素是否落在窗口区域之内,如落在区域之内则进一步求出位于区域内的部分。 裁减算法应包含的两个方面: 图形元素在窗口区域内外的判别 图形元素与窗口的求交 6.5 裁剪 【声明】 假设窗口是标准矩形,即边与坐标轴平行的矩形,由上(y=wyt)、下(y=wyb)、左(x=wxl)、右(x=wxr)四条边描述。 6.5.1 点的裁剪 对于任意一点P(x,y),若满足下列不等式 6.5.2 直线段的裁剪 假定直线段用p1(x1,y1)p2(x2,y2)表示。 直线段和剪裁窗口的可能关系: 完全落在窗口内 完全落在窗口外 与窗口边界相交?? 6.5.2 直线段的裁剪 实交点是直线段与窗口矩形边界的交点。 虚交点则是直线段与窗口矩形边界延长线或直线段的延长线与窗口矩形边界的交点。? Cohen-Sutherland算法 基本思想: 对每条直线段p1(x1,y1)p2(x2,y2)分三种情况处理: (1)若点P1和P2完全在裁减窗口内,直线段完全可见,“简取”之。 Cohen-Sutherland算法 (2)若点P1和P2均在窗口外,且满足下列4个条件之一: x1wxl 且x2wxl x1wxr 且x2wxr y1wyb 且y2wyb y1wyt 且y2wyt 则该直线段完全不可见,“简弃”之。 Cohen-Sutherland算法 (3) 若直线段既不满足“简取”的条件,也不满足“简弃”的条件,则该直线段可能与窗口相交,此时,需要对直线段按交点进行分段,分段后重复上述处理。 处理时,首先对直线段的端点进行编码,即对于直线段的任一端点(x,y),根据其坐标所在的区域,赋予一个4位的二进制编码D3D2D1D0。 编码规则如下: 若xwxl,则D0=1,否则D0=0; 若xwxr,则D1=1,否则D1=0; 若ywyb,则D2=1,否则D2=0; 若ywyt,则D3=1,否则D3=0。? Cohen-Sutherland算法 Cohen-Sutherland算法 裁剪一条线段时,先求出端点p1和p2的编码code1和code2,然后: (1)若code1|code2=0,对直线段应“简取”之。 (2)若code1code2≠0,对直线段可“简弃”之。 (3)若上述两条件均不成立。则需求出直线段与窗口边界的交点。在交点处把线段一分为二,其中必有一段完全在窗口外,可以弃之。再对另一段重复进行上述处理,直到该线段完全被舍弃或者找到位于窗口内的一段线段为止。 求交:假定直线的端点坐标为(x1,y1)和(x2,y2) 左、右边界交点y坐标值的计算 求交:假定直线的端点坐标为(x1,y1)和(x2,y2) 上、下边界交点的x坐标值的计算:? 解“或” 算法的步骤 算法的步骤 练习 Cohen-Sutherland算法 ?算法特点 2. 中点分割算法 基本思想: 当对直线段不能简取也不能简弃时,简单地把线段等分为二段,对两段重复上述测试处理,直至每条线段完全在窗口内或完全在窗口外。? 2. 中点分割算法 算法步骤: (1)输入直线段的两端点坐标:p1(x1,y1)、p2(x2,y2),以及窗口的四条边界坐标:wyt、wyb、wxl和wxr。 (2)对p1、p2进行编码:点p1的编码为code1,点p2的编码为code2。 (3)若code1|code2=0,对直线段应简取之,保留当前直线段的端点坐标,转(5);否则,若code1code2≠0,对直线段可简弃之,转(5);当上述两条均不满足时,进行步骤(4)。 2. 中点分割算法 (4)求出直线段的中点M,将p1M、p2M入栈。 (5)当栈不空时,从栈中弹出一条直线段,取为p1p2,转(2)进行处理。否则,继续(6)。 (6)当栈为空时,合并保留的直线段端点,得到窗口内的直线段p1p2。用直线扫描转换算法画出当前的直线段p1p2,算法结束。 例 中点分割算法的核心思想是通过二分逼近来确定直线段与窗口的交点。 2. 中点分割算法 重新构造算法步骤: (1)若code1|code2=0,对直线段应简取之,结束;否则,若code1code2≠0,对直线段可简弃之,结束;当这两条均不满足时,进行步骤(2)。 2. 中点分割算法 (2)找出该直线段离窗口边界最远的点和该直线段的中点。判中点是否在窗口内:若中点不在窗口内,则把中点和离窗口边界最远点构成的线段丢掉,以线段上的另一点和该中点再构成线段求其中点;若中点在窗口内,则又以中点和最远点构成线段,并求其中点,直到中点与窗口边界的坐标值在规定的误差

文档评论(0)

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

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

1亿VIP精品文档

相关文档