计算机图形学_第八章_开窗口与二维裁剪.ppt

计算机图形学_第八章_开窗口与二维裁剪.ppt

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

Lecture 8 开窗口及二维裁剪 ;概述;8.1 开窗口及裁剪的基本概念 ;8.1.1 坐标系 ;建模坐标系 ;世界坐标系 ;设备坐标系 ;规格化设备坐标系 ;坐标系变换;8.1.2 窗口与视区 ;8.1.2 窗口与视区;窗口与视区;8.1.3 窗口在图形显示中的应用 ;8.2 窗口到视区的变换 ;窗口到视区的变换;窗口到视区的变换;窗口到视区的变换;8.3 裁剪 ;点的裁剪;8.3.1直线的裁剪;实交点是直线段与窗口矩形边界的交点。 虚交点则是直线段与窗口矩形边界延长线或直线段的延长线与窗口矩形边界的交点。?;基本思想:对每条直线段p1(x1,y1)p2(x2,y2)分三种情况处理: (1) 直线段完全可见,“简取”之。 (2) 直线段完全不可见,“简弃”之。 (3) 直线段既不满足“简取”的条件,也不满足“简弃”的条件,需要对直线段按交点进行分段,分段后重复上述处理。?;编码 每条线段的端点都赋以四位二进制码D3D2D1D0 (上下右左) ,称为区域码(region code),用来标识出端点相对于裁剪矩形边界的位置。编码规则如下: 若xxl,则D0=1,否则D0=0; 若xxr,则D1=1,否则D1=0; 若yyb,则D2=1,否则D2=0; 若yyt,则D3=1,否则D3=0。 任何位赋值为1,代表端点落在相应的位置上,否则该位为0。若端点在裁剪矩形内,区域码为0000。如果端点落在矩形的左下角,则区域码为0101,其它类推。;裁剪 裁剪一条线段时,先求出端点p1和p2的编码code1和code2,然后: (1)若code1|code2=0,对直线段应简取之。 (2)若code1code2≠0,对直线段可简弃之。 (3)若上述两条件均不成立。则需求出直线段与窗口边界的交点。在交点处把线段一分为二,其中必有一段完全在窗口外,可以弃之。再对另一段重复进行上述处理,直到该线段完全被舍弃或者找到位于窗口内的一段线段为止。;求交:假定直线的端点坐标为(x1,y1)和(x2,y2) 左、右边界交点的计算: 下、上边界交点的计算:? 计算线段P1(x1,y1)P2(x2,y2)与窗口边界的交点 if(LEFTcode !=0) {x=XL; y=y1+(y2-y1)*(XL-x1)/(x2-x1);} else if(RIGHTcode !=0) {x=XR; y=y1+(y2-y1)*(XR-x1)/(x2-x1);} else if(BOTTOMcode !=0) {y=YB; x=x1+(x2-x1)*(YB-y1)/(y2-y1);} else if(TOP code !=0) {y=YT; x=x1+(x2-x1)*(YT-y1)/(y2-y1);} ;算法的步骤: (1)输入直线段的两端点坐标:p1(x1,y1)、p2(x2,y2),以及窗口的四条边界坐标:yt、yb、xl和xr。 (2)对p1、p2进行编码:点p1的编码为code1,点p2的编码为code2。 (3)若code1|code2=0,对直线段应简取之,转(6);否则,若code1code2≠0,对直线段可简弃之,转(7);当上述两条均不满足时,进行步骤(4)。 (4)确保p1在窗口外部:若p1在窗口内,则交换p1和p2的坐标值和编码。 (5)按左、右、下、上的顺序求出直线段与窗口边界的交点,并用该交点的坐标值替换p1的坐标值。也即在交点s处把线段一分为二,并去掉p1s这一段。考虑到p1是窗口外的一点,因此可以去掉p1s。转(2)。 (6)用直线扫描转换算法画出当前的直线段p1p2。 (7)算法结束。;//程序8-1区域码直线裁剪算法;;;8.3.3 中点分割算法 ;;8.3.4 Liang - Barsky算法 ;Liang - Barsky算法;Liang - Barsky算法;Liang - Barsky算法;Liang - Barsky算法;//程序8_2 Liang_Barsky裁剪算法;;;8.4 多边形裁剪 ;多边形裁剪;8.4.1 Sutherland-Hodgman算法 ;Sutherland-Hodgman算法;//程序8-3 Sutherland-Hodgman多边形裁剪;;;Sutherland-Hodgman算法;8.4.2 Weiler-Atherton算法 ;Weiler-Atherton算法;Weiler-Atherton算法;Weiler-Atherton算法;Weiler-Atherton算法;8.5 文本裁剪 ;8.5.1 以串为单位的裁剪 ;8.5.2 以字符为单位的裁剪 ;矢量裁剪 ;8.6 二维图形显示流程 ;8.7 OpenGL视区变换

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档