计算机图形学期末编程大作业.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文档。上传文档
查看更多
计算机图形学期末编程大作业

完成下列程序的设计、调试与及设计说明书: 实现直线、圆的生成 要求:(1)算法不限;(2)直线的端点、圆的圆心、半径由用户实时输入;(3)用所实现的直线、圆的生成程序实现一个任意图形的绘制。 实现区域填充(多边形区域)或影线填充 要求:(1)区域自行指定,至少应有一个内环(2)算法:计算机相关专业的要求实现图案填充,机械相关专业的要求实现影线填充。 直线段裁剪算法的实现 要求:完成对一个指定图形(见图)的裁剪,先在图形区显示原始图形及窗口位置,然后将裁剪后图形的显示在图形区的另一侧。 凸多面体消隐的实现(外法线法) 要求:立体数据自定。 样条曲线的实现 要求:实现B样条曲线,并能通过交互输入点的形式完成曲线绘制。 注意:要反求控制点 平时成绩(30分) 要求: 1、语言不限,可以是所熟悉的如何一种语言。 2、须提交的内容包括:源程序(电子版)、可执行程序,设计说明书(电子版及打印版)。 3、程序须经教师运行测试通过。 4、设计说明书B5页面打印,内容包括:算法与数据结构,程序流程说明及变量,程序运行情况分析及结果截图,程序使用说明。 题目一:实现直线、圆的生成 要求:(1)算法不限;(2)直线的端点、圆的圆心、半径由用户实时输入;(3)用所实现的直线、圆的生成程序实现一个任意图形的绘制。 程序使用说明. 1)概述 该程序以Visual C++6.0作为编程开发工具,利用其中的MFC(Microsoft Foundation Classes)库作为应用程序的框架,进行图形的编程绘制,有良好的用户操作界面和简洁的操作方法。 执行该程序,界面如下图。 图1-1 程序运行界面 图形绘制功能的实现,主要是通过点选菜单栏中的对应菜单项来实现。主要功能有:图形颜色的选择、绘制直线、绘制圆。 2)具体操作说明: a.颜色的选择. 鼠标左键单击菜单项,便会弹出颜色编辑对话框,如图2。 图1-2 颜色编辑对话框 可以通过鼠标左键点选对话框中的颜色实例,或者是自行编辑颜色值,来确定用户想要生成图形的颜色。下面的绘图过程,我们以黑色为例。 b.直线的绘制 图1-3 直线参数对话框 鼠标左键点选菜单栏中的菜单,会弹出下拉菜单,其中提供2种直线绘制的经典算法,包括DDA算法和Bresenham算法。我们可随意选择一种,例如Bresenham算法。 说表左键单击选定后,便会弹出参数输入对话框,如图3。 注意:由于在计算机的图形显示时,屏幕坐标默认以屏幕左上角点为(0,0)点,X轴方向水平指向右侧,Y轴方向竖直指向下侧。与我们实际中熟悉的坐标系不同,输入点坐标时要注意。例如直线的起止点坐标分别为(0,0)、(100,100),绘制结果如图5。 图1-5 绘制结果 如果输入的坐标值超出了设定的范围,将弹出提示对话框,如下图所示: c.圆的绘制 鼠标左键点选菜单栏中的菜单,会弹出下拉菜单, Bresenham算法。 则弹出对话框如图5。 图1-5 圆参数输入界面 根据对话框的要求,填入元的基本参数值:圆心坐标值和半径值。 注意:界面上对输入的数值的要求。程序的默认窗体中,图形显示空间为宽度大小为700个像素值,高为428个像素值。全屏条件下,图形显示空间为宽度大小为1024个像素值,高为644个像素值。 我们选择圆心在(350,220)的位置,半径取200像素值。图形效果如下图6。 图1-6 圆形的绘制 程序算法说明. 1) 直线的绘制 a.数值微分法(Digital Differential Analyzer简称DDA)对任何沿直线给定的x的增量△x,可以从下式中计算出的增量△y: 同样,可以得出对应于指定的△y的增量△x: 对斜率绝对值k|1的线段,让x从起点到终点变化,每步递增(或递减)1△x=±1,△y=±k。若前一次的直线上像素点坐标(xi,i),这一次的直线上像素点坐标为i+1,yi+1),则xi+l=xi±,i+1=yi±k随后输出该像素的颜色值即可。 对于斜率绝对值k|1的线段,让从起点到终点变化,每步递增(或递减)1,计算对应的x增量,△x=±1k。若前一次的直线上像素点坐标为,),这+1,y+1),则=xi±1/k,+l=yi±1随后输出该像素的颜1965年,Bresenham提出了一种更好的直线生成算法,称为Bresenham算法。此算法的k在0~1之间的情况,从给定线段的左端点,y)开始,逐步处理每个(x位置),并在扫描线值最接近线段的像素上绘出一点。,R/)的八分之一圆周。取(0,R)为起点,按顺时针方向生成。从这段圆弧的任意一点出发,按顺时针方向生成圆时,为了最佳逼近 主要程序段 /**********DDA直线算法*************/ void CAView::OnDDALine() { // TODO: Add you

文档评论(0)

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

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

1亿VIP精品文档

相关文档