ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:160.51KB ,
资源ID:7935746      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7935746.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(直线裁减多边形裁剪1.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

直线裁减多边形裁剪1.docx

1、直线裁减多边形裁剪1实验报告学院:计算机科学与信息学院 专业:计算机科学与技术 班级:07软件2姓名学号实验组实验时间2010-5-10指导教师成绩实验项目名称直线裁减,多边形裁剪实验目的掌握常用的裁减及消隐算法:直线、多边形的裁减。在MFC上实现基本算法。实验要求 在其中的一种算法中中选取一种完成直线的裁减算法。实验原理Cohen-SutherLand算法(编码算法)直线算法原理对于每条线段P1P2分为三种情况处理:(1)若P1P2完全在窗口内,则显示该线段P1P2。(2)若P1P2明显在窗口外,则丢弃该线段。(3)若线段不满足(1)或(2)的条件,则在交点处把线段分为两段。其中一段完全在窗

2、口外,可弃之。然后对另一段重复上述处理。为快速判断,采用如下编码方法:由窗口四条边所在直线把二维平面分成9个区域(右图),每个区域赋予一个四位编码:CtCbCrCl(上下右左);直线的端点都按其所处区域赋予相应的区域码,用来标识出端点相对于裁剪矩形边界的位置。各位编码含义:上:if yymax,Ct=1,else, 0;下:if yxmax,Cr=1,else, 0;左:if xxmax,Cl=1,else, 0;对某线段的两个端点的区号进行位与运算,可知这两个端点是否同在视区的上、下、左、右; 如果两端点的编码均为0000,表示直线在窗口内。 如果两端点的编码相与不为0000,表示直线在窗口

3、外。 如果两端点的编码不全为0000,但相与为0000,则该直线部分可见,需计算直线与窗口的交点,确定哪一部分可见。(2)Sutherland-Hodgema算法(多边形裁减算法原理)通过对单一边或面的裁剪来实现多边形的裁剪分割处理策略:将多边形关于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的裁剪。一次用窗口的一条边裁剪多边形。流水线过程(左上右下):前边的结果是后边的输入。亦称逐边裁剪算法。算法的每一次输出(包括中间结果)都是一个多边形的顶点表,且所有顶点均位于相应窗口裁剪边或面的可见一侧。由于多边形的每一条边需要与裁剪边或面分别进行比较,因此只需要讨论单条边和单个裁剪边或面之间可能的位

4、置关系。假设S,P为多边形的两个相邻顶点,且S为该边的起点,P为该边的终点,则变SP与裁剪边或面之间只有4种可能的关系 把平面分成两个部分:一部分包含窗口,成为可见一侧;另一部分称为不可见一侧。依序考虑多边形各边的两端点S,P。它们与裁剪线的位置关系只有4中情况。 可见一侧 S 可见一侧 P S P(1)S,P 均在可见一侧,计为P点 (2)S,P均不在可见一侧 P 可见一侧 可见一侧 P S S(3)S可见,P不可见 (4)S不可见,P可见由上可见,每一次将多边形的边与裁剪边或面比较后,输出一个或两个顶点,也可能无输出点。如果SP边完全可见,则输出P点,不必输出起点S,因为顶点是按顺序处理的

5、,S是作为前一边的终点输出的。如果SP边完全不可见,则无输出。如果SP边部分可见,则SP边可能进入或离开裁剪边或面的可见一侧。 如果SP边离开裁剪边或面的可见一侧,则输出SP与裁剪边或面交点。如果SP边进入裁剪边或面的可见一侧,则输出两点,一个为SP与裁剪边或面的交点,一个是P点。对于多边形的第一个顶点,只需判断其可见性。如果可见,则输出且作为起点S;否则无输出,但还是要作为S保存,以便后续点处理。对于最后一条边PnP1,其处理方法是:标志第一顶点为F,这样最后一条边则为PnF,可与其他边作相同的处理。实现方法: 设置二个表: 输入顶点表:用于存放被裁剪多边形的顶点p1-pm。 输出顶点表:用

6、于存放裁剪过程中及结果的顶点q1-qn。 输入顶点表中各顶点要求按一定顺序排列,一般可采用顺时针或逆时针方向。 相对于裁剪窗口的各条边界,按顶点表中的顺序,逐边进行裁剪实验环境Visual studio VC+ 6.0实验步骤1.根据Cohen-Sutherland直线剪裁算法思想,编写相应的程序,下面给出核心算法程序(1)如下为编码函数:(2)裁剪算法:(3)运行后的界面如下:2.Sutherland-Hodgema算法剪裁算法思想,编写相应的程序,下面给出主要代码:(1)算法描述:1. while 对于每一个窗口边或面 dobegin2. if P1在窗口边的可见一侧 then 输出P13

7、. for i=1 到 n dobegin4. if Pi在窗口边的可见一侧 then5. if Pi+1在窗口边的可见一侧 then 输出Pi+16. else 计算交点并输出交点7. else if Pi+1在窗口边的可见一侧,then计算交点并输出交点,同时输出Pi+1endend8. end of algorithm(2)代码实现实验内容本程序实现了标准举行窗口对任意直线和任意多边形的裁减算法,具体查看试验结果。实验结果1.对直线裁剪运行的结果如下:(1)点击“画直线”,在绘图区用鼠标绘制举行裁切窗口(2)点击“画矩形”,在绘图去用鼠标绘制要被裁切的直线。如图:(3)点击“裁剪”,实行相应算法完成裁减,如下图:2.对多边形裁剪运行的结果如下:(1)运行的界面如下:(2)用鼠标拖动画一个多边形,如下其中红色部分表示裁剪后的结果实验总结 1、通过本次试验,我对Cohen-Sutherland直线剪裁算法和Sutherland-Hodgman多边形裁剪算法有了更深刻的了解。 2、进行图形裁剪时,首先在课堂上了解了有关裁剪算法的过程,然后在进行代码的实现。3、在做实验的时候也遇到了些问题,由于对算法的细节有些问题,使得代码编写中出现了错误。经过了讨论研究,使得问题得以解决,从这个过程中学习到了很多东西。这次实验让我受益匪浅。指导教师意见签名: 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1