lesson图形裁剪.ppt

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
lesson图形裁剪

Nicholl-Lee-Nicholl算法 Nicholl-Lee-Nicholl算法 Nicholl-Lee-Nicholl算法 Nicholl-Lee-Nicholl算法 梁友栋-Barsky算法 线段的参数表示 x=x0+t△x y=y0+t△y 0=t=1 △x=x1-x0 △y=y1-y0 窗口边界的四条边分为两类:始边和终边。 梁友栋-Barsky算法 始边和终边的确定及交点计算: 令 QL= - △x DL= x0-xL QR= △x DR= xR-x0 QB= - △y DB= y0-yB QT= △y DT= yT-y0 交点为 ti= Di / Qi i=L,R,B,T Qi 0 ti为与始边交点参数 Qi 0 ti为与终边交点参数 Qi =0 Di 0 时,线段不可见 Di 0 时, 分析另一D, 梁友栋-Barsky算法 当Qi =0时 若Di 0 时,线段不可见 (如图中AB,有QR=0,DR0) 若Di 0 时, 分析另一D, (如图中的EF就是这种情况,它使QL=0,DL0和QR=0,DR0。这时由于EF和x=xL及x=xR平行,故不必去求出EF和x=xL及x=xR的交点,而让EF和y=yT及y=yB的交点决定直线段上的可见部分。) * * 第四节 图形裁剪 §1、点的裁剪 §2、线段的裁剪 §3、多边形的裁剪 §4、文本的裁剪 点的裁剪 点的裁剪 任何图形都可能包含点、直线、字符、和多边形乃至直线, 但它们都可以分解成点的集合。所以点的裁剪是图形裁剪中最基本的问题。 假设窗口的左下角坐标为(xmin,ymin),右上角坐标为(xmax,ymax),对于给定点P(x,y),则P点在窗口内的条件是要满足下列不等式: xmin = x = xmax and ymin = y = ymax 否则,P点就在窗口外。 (xmin,ymin ) (xmax,ymax ) 线段的裁剪 线段的裁剪 当窗口采用凸多边形时,任何一条线段 只会至多有一段在窗口内: 当一条线段的两个端点全在窗口内时,该线段整个在窗口内 当一条线段的两个端点,一个在窗口内,一个在窗口外时,该线段部分在窗口内,部分在窗口外 当一条线段的两个端点全在窗口外时,该线段可能整个在窗口外,也可能部分在窗口内,部分在窗口外 整个线段全在窗口内; 整个线段全在窗口外; 线段部分在窗口外,部分在窗口内。 线段与窗口的关系通常有以下三种 Cohen-Sutherland算法基本原理 线段的裁剪 这是一个最早最流行的线段裁剪算法。该算法通过初始测试来减少要计算的交点数目从而加快线段裁剪算法的速度。每条线段的端点都赋以四位二进制码,称为区域码(region code),用来标识出端点相对于裁剪矩形边界的位置。区域通过如下所示的边界设定。 区域码的各位指出端点对于裁剪矩形边界 的四个相对坐标位置: 左,右,下,上。 将区域码的各位从右到左编号,则坐标区 域与各位的关系为:上 下 右 左 X X X X 任何位赋值为1,代表端点落在相应的位置上,否则该位为0。若端点在裁剪矩形内,区域码为0000。如果端点落在矩形的左下角,则区域码为0101。 Cohen-Sutherland算法基本原理 直线的裁剪 如果两端点的编码均为0000,表示该线段在窗口内。 如果两端点的编码相与不为0000,表示该线段在窗口外。 如果两端点的编码不全为0000,但相与为0000,则该线段不可见或部分可见,需计算线段与窗口的交点,确定哪一部分可见。 一旦给定所有的线段端点的区域码, 就可以快速判断哪条线段完全在裁剪窗口内,哪条线段完全在窗口外。 所以得到一下规则: 线段的裁剪 Cohen-Sutherland算法描述 Cohen-Sutherland算法的关键在于总是先确定窗口外的一个端点,这样位于此端点至与窗口边的交点之间的线段必为不可见,故可将其抛弃。然后利用此法处理剩余的部分。Cohen-Sutherland算法描述如右: BOOL done,draw; done表示是否完成,draw表示是否可见; Unsigned char code1,code2;端点1,端口2的编码 While (!done) begin if (判断code1,code2,若

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档