算法演示系统设计和实现.docVIP

  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文档。上传文档
查看更多
算法演示系统设计和实现

算法演示系统设计和实现   摘 要:计算机图形学的主要内容是研究图像的生成和算法处理,该课程最大的难点在于算法理解。对应《计算机图形学》课程教材,设计开发了一套算法演示系统,通过人机交互和算法的动态演示,实现可视化教学,增强了学生的理解力。   关键词:算法演示;可视化教学;计算机图形学   DOIDOI:10.11907/rjdk.151497   中图分类号:TP319 文献标识码:A 文章编号:1672-7800(2015)007-0142-03   基金项目基金项目:   简介简介:隋雪洁(1991-),女,山东威海人,山东科技大学信息科学与工程学院硕士研究生,研究方向为CAD与图形图像处理;杨伟(1987-),男,山东潍坊人,天津航天中为数据系统科技有限公司设计师 ,研究方向为电力电子技术。   0 引言   《计算机图形学》是图形图像处理领域的一门基础课程,也是计算机科学中最活跃的学科分支之一,近几年发展迅速,在CAD设计、广告设计、娱乐影视、计算机动画、虚拟现实等许多领域都有应用,高校几乎都开设了这一课程。   计算机图形学知识是纯理论知识,教材对于算法的阐述也只是思想和静态代码,学生难以想象出算法的执行效果,极易感到枯燥乏味,失去学习积极性。本文根据《计算机图形学》教材,采用面向对象技术,着力于14种图形学算法的原理阐述与设计实现,将算法图形可视化,以提高《计算机图形学》课程的教学效果。   1 开发环境简介   本系统选用VS2010作为开发设计平台。VS2010是目前最流行的Windows平台应用程序开发环境,MFC是一个C++类库,它封装了许多Windows API函数,当在项目中新建一个MFC工程时,开发环境会自动产生许多文件,开发者可以专心研究程序的逻辑。   2 演示系统设计   2.1 系统综述   传统的算法开发几乎都采用Opengl库。Opengl是一个功能强大、调用方便的底层图形库,它将简单的图形生成算法封装好,虽然直接调用生成的演示效果与底层VC++编写无异,但是不利于算法掌握。本教学演示系统采用C++编写开发,学生可以展开代码与图形对照,对算法的理解更加深刻,以提高编程能力。   采用彻底的面向对象技术,将每种算法放在一个类中,在对应类中定义算法所需的参数和函数,不仅使已有算法有良好的组织结构,还利于新算法的加入,其优点如下:①可扩展性;②内容丰富,涵盖知识面广;③操作界面简洁,有良好的可交互性;④真正实现可视化教学,在运行界面动态展示算法效果。   2.2 功能设计   本算法演示系统与教材对应,开发了14种算法,主要包括:直线的生成算法与直线的反走样算法;椭圆的生成与圆的生成算法;二维与三维图形的变换算法,包括旋转、平移、切错、缩放;多边形的3种不同填充算法;Bezier曲线与B样条曲线生成算法;双三次Bezier曲面与双三次B样条曲面生成算法;立方体纹理映射。   2.3 流程设计   教学演示系统旨在实现算法的可视化。作为辅助学习系统,必须有简洁的用户界面,并实现人机交互。采用菜单项和弹出对话框方式,用户既可以选择不同的算法进行演示,也可在对话框中输入不同的参数,通过对参数的修改,观察屏幕图形的变化,加深对算法的理解,图1为系统设计流程。   图1 系统流程   2.4 算法设计   以多边形填充3种不同算法为例,阐述算法设计思想。   边缘填充算法涉及到2种颜色:背景色和填充色。找到多边形每一条边与扫描线的交点,以交点为边界分为左右两部分,填充只需将交点右侧像素点的颜色取反即可(右侧延伸到多边形的外接矩形)。当多边形所有边循环一遍后,填充即完成。   有效边填充算法:首先找到多边形纵坐标的最小值与最大值,以此确定扫描线范围,扫描线从多边形最低点向上移动,找到每一条扫描线与多边形各边的交点,算出交点横坐标,并以横坐标递增的次序排序,从而确定填充区间,填充该区间内的像素点即可。此外,为了增加可观性,每一条填充完毕时设定休眠时间。   种子填充算法:首先用鼠标在填充图形内部任意区域选取种子结点,然后搜索上下左右像素点,由内向外进行指定点的填充,直到遇到边界位置。本算法采用进栈出栈思想,可有效提高填充效率。   三种算法流程如图2所示。   图2 多边形填充流程   3 演示系统实现   3.1 系统类   本系统数据存储在CStudyDoc类文档中,结果显示在CStudyView类中,下面对几大重要类作简要说明:   CStudyFrame是程序主框架;   CStudyApp表示开发程序的主线程;   CStudyDoc是文档类,主要负责维护和管理程序数据;   CStudyView表示文档数据,也是用户操作的主

文档评论(0)

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

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

1亿VIP精品文档

相关文档