- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告
Experimentation 应port of Taiyuan teachers College
旅
一、 实验目的
二、 实验原理
三、 实验仪器及材料
四、 实验方法
五、 实验记录及数据处理
六、 误差分析及讨论
系部计算机系
姓名
年级三年级
同组者
课程图形学
口期
项 同 直线段的裁剪算法
一、实验目的:
熟悉图形裁剪的基木知识
掌握Cohen-Sutherland直线裁剪算法 二、实验内容:
在矩形窗口的裁剪算法中,考虑到构成图形的基本元素就是线段,曲线可看 成是有很多小线段逼近而成的,因此,讨论线段的裁剪算法更为实用,即 Cohen-Sutherland 裁剪算法。
Cohen-Sutherland裁剪算法具体思路如下。
任意平面线段和矩形窗口的位置关系只会有如下3种:
完全落在窗口内。
完全落在窗口外。
部分落在窗口内,部分落在窗口外。
要想判断线段和窗口的位置关系,只要找到线段的两端点相对于矩形窗口的 位置即可,
线段的两端点相对于矩形窗口的位置可能会有如下几种情况:
线段的两个端点均在窗口内,这时线段全部落在窗口内,完全可见,应予 以保留。
线段的两个端点均在窗口边界线外同侧,这时线段全部落在窗口外,完全 不可见,应予以舍弃。
线段的一个端点在窗口内,另一个端点在窗口外,这时线段部分可见,应 求出线段与窗口边界线的交点,从而得到线段在窗口内的可见部分。
线段的两个端点均不在窗口内,但不处于窗口边界线外同侧,这时有可能 线段是部分可见的,也可能是完全不可见的。
Cohen-Sutherland裁剪算法就是按照上述思路来对线段进行裁剪的,只是 在线段的两端点相对于矩形窗口的位置上,巧妙地运用了编码的思想。
首先,延长窗口的四条边界线,将平面划分成9个区域,然后,用四位二进 制数C3C2C1C0对这9个区域进行编码,编码规则如下:
第0位CO:当线段的端点在窗口的左边界之左时,该位编码为1,否则,该 位编码为Oo
第1位Cl:当线段的端点在窗口的右边界之右吋,该位编码为1,否则,该 位编码为0。
第2位C2:当线段的端点在窗口的下边界之下时,该位编码为1,否则,该 位编码为Oo
第3位C3:当线段的端点在窗口的上边界之上时,该位编码为1,否则,该 位编码为Oo
于是算法步骤可描述如下:
步骤1:根据上述编码规则,对线段的两个端点进行编码。
步骤2:根据线段的两端点编码判断线段相对于窗口的位置关系,从而决定 对线段如何剪取。
两端点编码全为0000吋,说明线段完全位于窗口内,是完全可见的,于是 显示此线段。
两端点编码逐位逻辑与不为0时,说明线段的两个端点位于窗口外同侧, 即此线段完全位于窗口外,是完全不可见的,于是全部舍弃,不显示此线段。
两端点编码逐位逻辑与为0时,说明此线段或者部分可见,或者完全不可 见。此吋需要计 算出线段与窗口某一边界线或边界线的延长线的交点,若交点 在窗口边界线的延长线上,则说明该线段完全位于窗口外,不予以显示;若交 点在窗口边界线上,则对以其中一个交点为分割点的两端线段,再分别对其端 点进行编码,并按照上述(1)和(2)所示的方法进行测试,从而舍弃完全位 于窗口外的一段线段,保留并显示完全位于窗口内的一段线段。
三、实验代码:
Cohen-SutherLand实现裁剪直线的两个关键函数
//计算点x, y的编码
void CCohenSutherLandView::CompOutCode(float x,float y,CRect* rcct,OutCode* outCodc)
{
outCode-all 二 0;
outCode-top = outCode-〉bottom =0;
if (y rect-top)
{
outCode-top = 1;
outCode-all +二 1;
} else if (y rect-bottom)
outCode-bottom = 1;
outCode-all +二 1; }
outCode~right 二 outCodc~left 二 0;
if (x rect-right)
{
outCode-right 二 1; outCode~all +二 1;
}
else if(x rect-left)
{
outCode-left 二 1;
outCode-all +二 1;
//Cohen-SutherLand线段裁剪算法
void CCohenSutherLandView::CohenSutherLineClip(CDC* pDC, float xO, float yO,float xl,float yl, CRect* rect)
{
BOOL accept, done;
OutCode outCodeO, o
您可能关注的文档
最近下载
- 奋达供应商质量体系审核表B1版本+自评模板 (格式可转换)OK.pdf
- 水星船外机二冲程15-25-30 HP E-ETC 2012 英文维修手册.pdf
- 水星船外机二冲程 200-225-250-300 HP 90° V6 2010 英文维修手册.pdf
- 第三章_期权交易结算.pdf VIP
- 十五五规划纲要解读:高端装备制造领跑.pptx
- 微信聊天记录想要恢复原来如此简单!一学就会.pdf VIP
- 《总裁沟通及影响力》--杨台轩详解.ppt VIP
- 最新人教版九年级上册数学期中试题(含答案).docx VIP
- 西门子智能照明办公大楼应用.pdf VIP
- 智能照明系统(西门子InstabusKNXEIB系统)专项施工方案.doc VIP
原创力文档


文档评论(0)