计算机图形学实验指导书(资料)
- 格式:doc
- 大小:1.19 MB
- 文档页数:80
《计算机图形学》实验指导书随着计算机科学与技术的迅猛发展,特别是大规模集成电路和超大规模集成电路技术的飞速发展,计算机已经成为一种高速、费用低的生成图形的有效工具。
计算机图形学作为利用计算机生成图形的技术,已经越来越广泛地在各个领域得到应用。
随着计算机图形学应用领域的拓宽和应用水平的提高,人们越来越重视对该项技术的研究和利用。
当今,计算机图形学已经成为了计算机科学技术领域的一个重要研究方向,并被广泛的应用于科学计算、工程设计、医药、工业、艺术、娱乐业、广告业、教育与培训、商业和政府部门等。
鉴于计算机图形学的重要性和应用的广泛性,计算机科学与技术专业将其设置为专业必选的选修课。
它主要是研究用计算机及其图形设备来输入、表示、变换、运算和输出图形的原理、算法及系统。
通过对本课程的学习,使学生对计算机图形学有一个完整的了解,并为进行计算机图形学应用和研究打下扎实基础。
为了让学生深入理解各种图形算法和相关理论知识,贯彻学生学习知识是为了应用知识、应用就要追求创新应用的思想和意识,设计了7个实验。
通过实验,使学生更加深入的理解计算机图形系统的工作机理和基本图形生成和处理算法。
实现语言为Turbo C 、Visual C++ 6.0、OpenGl,或其它学生掌握的高级语言。
这些实验是对学生的一种多全面训练。
它着眼于原理与应用的结合,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,起到深化理解和灵活掌握教学内容的目的。
在实验过程中,能够培养学生的自学能力、团队协作能力、解决问题能力、软件开发能力等多种能力。
实验补充Visual C++图形程序设计 (1)一、实验目的 (1)二、实验任务 (1)三、基础知识和实验步骤 (1)3.1 Visual C++ 6.0应用程序开发方法 (1)3.1.1 Visual C++的集成开发环境 (1)3.1.2 应用程序工程的建立方法 (2)3.1.3 输入源程序进行程序设计 (6)3.2 图形设备接口和图形程序设计 (7)3.2.1 图形设备接口简介 (7)3.2.2 绘制基本图形 (9)3.2.3 画笔与画刷 (12)3.2.4 文本显示 (17)3.3 鼠标编程 (18)3.3.1 鼠标消息处理 (18)3.3.2 捕捉鼠标 (19)3.3.3 鼠标编程综合示例 (19)3.4 菜单程序设计 (24)3.4.1 菜单编辑器 (25)3.4.2 菜单消息响应 (27)3.4.3 综合示例 (28)四、实验总结 (30)实验一基本图形的生成技术 (31)A.直线生成算法 (31)一、实验目的 (31)二、实验任务 (31)三、基本知识和实验步骤 (31)任务一:实现三种画线程序 (31)任务二:放大10倍后,算法演示程序 (33)任务三:加入鼠标功能,实现交互式画直线 (35)四、实验结果和分析 (37)五、实验总结 (37)B.圆、椭圆生成算法 (38)一、实验目的 (38)二、实验任务 (38)三、实验内容 (38)任务一:中点画圆法的扫描转换算法 (39)任务二:添加鼠标程序,实现交互式画圆 (41)任务三:编写中点画椭圆法的扫描转换程序 (43)任务四:添加鼠标程序,实现交互式画椭圆 (44)四、实验结果、分析和总结 (46)实验二基本图形处理技术 (47)A.区域填充算法 (47)一、实验目的 (47)二、实验任务 (47)三、实验步骤 (47)四、实验结果、分析和总结 (51)B.线段裁剪算法 (52)一、实验目的 (52)二、实验任务 (52)三、实验步骤 (52)任务一:编码裁剪算法的程序设计 (53)任务二:用鼠标实现交互式裁剪效果 (55)四、实验结果和总结 (59)实验三二维几何变换 (60)一、实验目的 (60)二、实验任务 (60)三、实验内容和实验步骤 (60)任务一:根据数学模型,编写几何变换程序 (60)任务二:利用鼠标实现交互式移动图形 (64)四、实验分析和总结 (65)实验四曲线与曲面 (66)一、实验目的 (66)二、实验任务 (66)三、实验内容和实验步骤 (66)任务一:抛物线程序设计 (66)任务二:Hermite 曲线程序设计 (67)任务三:Bezier曲线的算法实现 (68)任务四:三次B样条曲线的算法实现 (73)参考文献 (75)附录A 实验报告规范 (76)实验补充Visual C++图形程序设计一、实验目的Visual C++是在Microsoft C的基础上发展而来的,随着计算机软、硬件技术的快速发展,如今Visual C++已成为集编辑、编译、运行、调试于一体功能强大的集成编程环境。
本章以Visual C++ 6.0为对象,主要介绍Visual C++集成编成环境的使用、图形设备接口和常用图形程序设计、鼠标编程以及菜单设计等基础,目的是通过对Visual C++的学习,掌握Visual C++图形程序设计的方法,为计算机图形学原理部分的算法实现提供程序工具和方法。
二、实验任务(需要课外学时8学时)1.学习Visual C++图形程序设计的方法;2.掌握Visual C++集成编成环境的使用、图形设备接口和常用图形程序设计、鼠标编程、橡皮筋交互技术、画刷与画笔以及菜单设计等;三、基础知识和实验步骤3.1 Visual C++ 6.0应用程序开发方法介绍Visual C++ 6.0集成开发环境,以一个简单的实例介绍利用Visual C++应用程序工程建立方法和程序设计框架。
3.1.1 Visual C++的集成开发环境从开始菜单中启动Visual C++ 6.0,进入开发集成环境。
打开一个项目后,可以看到Visual C++ 6.0的开发环境由标题栏、工具栏、工作区窗口、源代码编辑窗口、输出窗口和状态栏组成,见图3.1所示。
标题栏用于显示应用程序名和所打开的文件名,标题栏的颜色可以表明对应窗口是否被激活。
菜单栏包括文件、编辑、显示、插入、工程、编译、工具、窗口和帮助九项主菜单,包含了从源代码的编辑、界面设计、程序调试和编译运行在内的所有功能。
工具栏列出了常用的菜单命令功能和对象方法。
工具栏的下面是两个窗口,一个是工作区窗口,用于列出工程中的各种对象,一个是源代码编辑窗口,用于各个对象的程序设计。
输出窗口显示项目建立过程中所产生的各种信息。
屏幕底端是状态栏,它给出当前操作或所选择命令的提示信息。
图3.1 Visual C++ 6.0集成开发环境3.1.2 应用程序工程的建立方法Visual C++提供了一种称为App Wizard 的工具,利用该工具,用户可以方便地按照自己的需要创建符合需要的应用程序框架。
在这个基础上,用户可以进一步将自己编写的程序加入到这个框架中,实现用户程序的功能。
下面介绍建立VcApp 应用程序框架的方法,其它应用程序的方法都与此类似。
第一步:启动Visual C++,选择工程方法从开始菜单中选择 Visual C++,进入Visual C++集成环境。
从文件菜单中选择新建(New)命令,弹出图3-2对话框。
切换到工程(Projects )标签,项目类型选择MFC AppWizard(exe),输入工程的名字(如VcApp ),选择项目放置的位置,然后单击“确定”按钮。
图3-2 Visual C++的New 对话框第二步:设置应用程序的特性。
这些设置包括六个问题,每一个问题都有不同的选项供选择。
一个问题选择完后,通过“下一步”(Next)选择下一个问题,直到六个问题选择完毕。
还可以通过“上一步”(Back)返回上一个问题重新选择。
下面继续上面的例子,在单击“确定”按钮后,弹出第一个问题窗口,如图3-3所示。
第一个问题是建立什么类型的应用程序,有三个选项:单个文档(Single document)、多重文档(Multiple document)和基本对话(Dialog based)。
单个文档应用程序主窗口中只有一个窗口,多重文档可以在主窗口中开多个子窗口,基本对话主窗口是一个对话框。
例中选择单个文档,单击“确定”,进入下一个问题,如图3-4所示。
第二个问题是数据库的支持,是否用ODBC存取数据库,有四个选项:不包括数据库的支持(None)、仅包含ODBC头文件(Header files only)、指定一个数据库但没有文件支持和指定一个数据库但需要文件支持。
当选择了后两项,则需要用户选择一个已经建立的数据库。
例中不需要数据库支持,选择第一个选项“否”,进入第三个问题,如图3-5所示。
图3-3 第一个问题:选择应用程序的类型图3-4 第二个问题:选择是否要用ODBC支持第三个问题是对ActiveX的支持。
有五个选项:(1)没有对ActiveX的支持;(2)ActiveX容器,它可以包含链接和嵌入对象。
容器不能为其它的ActiveX程序提供支持,它只能维护嵌入对象;(3)微型服务器(Mini-server),应用程序不能独立运行,只能被调用为其它程序建立ActiveX对象。
(4)完整服务器(Full-server),它能够独立运行,并能够为其它应用程序建立ActiveX对象。
(5)容器和服务器,一个应用程序可以同时是容器和服务器。
在例子中,选择第一个选项,没有对ActiveX的支持,单击“下一个”(Next)进入下一个问题。
图3-5 第三个问题:选择是否对ActiveX的支持第四个问题是应用程序的特性和高级选项,如图3-6所示。
图3-6 应用程序的特性和高级选项例中全部采用默认选项,进入下一个问题。
第五个问题是项目的风格、原文件注释和MFC库类型,如图3-7所示。
在例子中全部采用默认选项,进入第六个问题。
第六个问题是确定类名和文件名,如图3-8所示。
基于第一个问题到第五个问题的回答,AppWizard会把将要建立的新类的名称通知用户。
AppWizard将为应用程序建立四个新类,CVcAppApp是应用程序类,它是CWinApp的派生类。
CMainFrame是一个拥有应用程序主窗口的类。
CVcAppDoc和CVcAppView是该应用程序的文档和视图类。
这些名字用户可以改变。
最后单击“完成”(Finish),显示所建项目的信息,单击“确定”后,项目建立完成。
图3-7 项目的风格、原文件注释和MFC库类型图3-8 通知MFC产生的类名称3.1.3 输入源程序进行程序设计应用程序项目工程建立以后,就为应用程序的开发建立了一个框架,这是不输入任何程序代码,对该项目程序进行编译和运行,可以生成一个完整的窗口程序。
用户根据项目工程中的不同类,输入自己设计的程序代码,完成用户的程序设计。
例如,从VcApp Classes中找到CVcAppView的OnDraw()函数,如图3-9所示。