多边形扫描转换算法实验报告.docxVIP

  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文档。上传文档
查看更多
多边形扫描转换算法实验报告 中国民航大学计算机与技术学院 图形学实验报告 课程名称: 姓名: 系: 专业: 年级: 学号: 指导教师:计算机图形学汪何媛计算机科学与技术计算机科学与技术XX级惠康华 XX年11月5日 实验项目:多边形的扫描转换与区域填充 一、实验目的与要求 1、了解多边形扫描转换的各种算法,掌握多边形的扫描转换与区域填充算法。 2、进一步掌握在VC集成环境中实现图形算法的方法与过程。 二、实验内容 设计菜单程序,利用消息处理函数,完成一下要求: 1、给出凸多边形的若干顶点(3~5个),实现多边形的“x扫描算法”。 2、实现种子填充、泛填充的算法(四邻法)。 3、实现边缘填充算法。 4、设计程序,实现判断一个点是否在多边形区域内。 三、重要算法分析 扫描线种子填充算法: 1、分别记下种子点s_point,图形顶边和底边的y坐标值ymax和ymin,以及图形边界boundary,令y=s_,转步骤3。 2、判断当前扫描线y的下一条扫描线y+1的值是否小于ymax,若是,则y++,转步骤3,否则,y=s_,转步骤3。 3、令x=s_,从点(x,y)开始,向右扫描,若没遇到边界,x坐标值依次加1,y坐标值保持不变,并依次填充所扫描的点,否则转步骤4。 4、令x=s_,从点(x,y)开始,向右扫描,若没遇到边界,x坐标值依次减1,y坐标值保持不变,并依次填充所扫描的点;否则,判断当前扫描线y的值是否大于或等于s_,若是,转步骤2,否则转步骤5。 5、判断当前扫描线y的下一条扫描线y-1的值是否大于ymin,若是,则y--,转步骤3,否则停止。 区域填充的扫描线算法: 区域填充的递归算法原理和程序都很简单,但由于多次递归,费时、费内存,效率不高。为了减少递归次数,提高效率可以采用扫描线算法。算法的基本过程如下:当给定种子点(x,y)时,首先填充种子点所在扫描线上的位于给定区域的一个区段,然后确定与这一区段相连通的上、下两条扫描线上位于给定区域内的区段,并依次保存下来。反复这个过程,直到填充结束。 区域填充的扫描线算法可由下列四个步骤实现: (1)初始化:堆栈置空。将种子点(x,y)入栈。 (2)出栈:若栈空则结束。否则取栈顶元素(x,y),以y作为当前扫描线。 (3)填充并确定种子点所在区段:从种子点(x,y)出发,沿当前扫描线向左、右两个方向填充,直到边界。分别标记区段的左、右端点坐标为xl和xr。 (4)并确定新的种子点:在区间[xl,xr]中检查与当前扫描线y上、下相邻的两条扫描线上的象素。若存在非边界、未填充的象素,则把每一区间的最右象素作为种子点压入堆栈,返回第步。 四、程序运行截图 用种子扫描算法填充图形所得的结果如图1: 图1运用种子扫描填充算法填充图形的结果 五、总结与调试经验 在这个程序调试过程中,真的有点艰难,课本上的程序好像有点问题,所以自己不断寻找错误和解决方法,收获很大,继续加油!!! 学生实验报告 实验课名称:计算机图形学 实验项目名称:多边形填充算法 专业名称:计算机科学与技术 班 学级:号: 学生姓名: 教师姓名: 年 一、实验目的 1、掌握中点Bresenham直线扫描转换算法的思想。 2掌握边标志算法或有效边表算法进行多边形填充的基本设计思想。3掌握透视投影变换的数学原理和三维坐标系中几何图形到二维图形的观察流程。 4掌握三维形体在计算机中的构造及表示方法 二、实验环境 Windows系统,。 三、实验步骤 1、给定两个点的坐标P0(x0,y0),P1(x1,y1),使用中点Bresenham直线扫描转换算法画出连接两点的直线。 实验基本步骤 首先、使用MFCAppWizard(exe)向导生成一个单文档视图程序框架。 其次、使用中点Bresenham直线扫描转换算法实现自己的画线函数,函数原型可表示如下: voidDrawLine(CDC*pDC,intp0x,intp0y,intp1x,intp1y); 在函数中,可通过调用CDC成员函数SetPixel来画出扫描转换过程中的每个点。 COLORREFSetPixel(intx,inty,COLORREFcrColor); 再次、找到文档视图程序框架视图类的OnDraw成员函数,调用DrawLine函数画出不同斜率情况的直线,如下图: 最后、调试程序直至正确画出直线。 2、给定多边形的顶点的坐标P0(x0,y0),P1(x1,y1),P2(x2,y2),P3(x3,y3),P4(x4,y4)…使用边标志算法或有效边表算法进行多边形填充。 实验基本步骤 首先、使用MFCAppWizard(exe)向导生成一个单文档视图程序框架。其次、实现边标志算法或有效边表算法函数,如下: voidFillPolygon(CDC*pDC,intpx[]

文档评论(0)

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

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

1亿VIP精品文档

相关文档