《计算机图形学实验》教学大纲
Experiments of Computer Graphics
课程代码:XF166008学时:32学分:1
理论学时:32实验或讨论学时:2
适用专业:计算机类、信息电子类等理工科 课程性质:选修
撰稿人:葛平俱审定人:牟少敏
一、实验课的性质与任务
计算机图形学是一个发展迅速的学科,但是学生在掌握中往往对图形学的复杂理论和方法不能真正理解和应用,造成了对计算机图形学这门课程的学习的局限。本实验课程紧紧围绕计算机图形学的理论和基本算法,以Visual C/C++(或其他可视化语言)和OpenGL为开发平台(选做),完成一系列图形试验,加深学生对图形学算法的理解,同时具备一定的二维、三维图形程序开发基础,为不久的毕业设计和未来踏入社会可能面对的与图形相关的工作打下坚实的基础。
二、实验目的与要求
1、实验目的
计算机图形学实验教学是为了将学生的计算机操作能力、分析能力、工程设计能力与应用实践结合起来,引导学生由浅入深地掌握计算机图形学理论与算法,使学生加深理解计算机图形学的基本概念、基本原理和基本算法;掌握和实现图形在计算机内显示的全过程,包括:基本图形的生成、坐标变换、图形投影、图形裁剪、图形消隐、基本的真实感显示等。掌握交互构图形能力,具备工程应用的图形学基础。
2实验要求
1) 学生应该具有线性代数和C/C++的基础,有数据结构的相应知识。
2) 上机前应准备好实验的程序设计算法描述与关键分析内容。
3) 准备好程序测试数据和设备操作步骤,上机调试、运行。
4) 完成每个实验后进行数据与程序对比分析。
5) 写出实验报告(含实验题目,算法分析,源程序,测试情况和运行结果。若实验未能通过,给出原因与今后改进措施)。
6)上交所有算法演示程序(源代码)。
三、实验项目设置情况
序号 | 实验项目名称 | 学时 | 开出要求 | 实验项目类型 |
必做 | 选做 | 基础型 | 综合设计 | 研究创新 |
演示 | 验证 |
1 | Vc++平台下图形开发过程 | 2 | 必做 |
| 演示 | | | |
2 | Vc++可视化图形程序开发基础1 | 2 | 必做 |
| 演示 | |
|
|
3 | Vc++可视化图形程序开发基础2 | 2 | 必做 | | 演示 | | | |
4 | 分形几何图形设计 | 2 | 必做 | | | 验证 | | |
5 | 直线的生成算法 | 2 | 必做 | | | 验证 | | |
6 | 圆的生成算法 | 2 | 必做 | | | 验证 | | |
7 | 椭圆的生成算法 | 2 | 必做 | | | 验证 | | |
8 | 区域填充算法 | 2 | 必做 | | | 验证 | | |
9 | 图元属性处理 | 2 | 必做 | | | 验证 | | |
10 | 二维几何变换 | 2 | 必做 | | | 验证 | | |
11 | 图形裁剪 | 2 | 必做 | | | 验证 | | |
12 | 三维几何变换 | 2 | 必做 | | | 验证 | | |
13 | 投影变换 | 2 | | 选做 | | 验证 | | |
14 | 曲线曲面生成 | 2 | | 选做 | | 验证 | | |
15 | 综合实验 | 2 | 必做 | | | | √ | |
16 | 模拟考试 | 2 | 必做 | | | | | |
17 | 使用OpenGL绘制基本图形 | 2 | | 选做 | | 验证 | | |
18 | OpenGL真实图形的绘制 | 2 | | 选做 | | 验证 | | |
四、各实验项目教学内容
实验项目一:Vc++平台下图形开发过程2学时
(一)实验目的要求
熟悉vc++平台下图形程序开发的基本过程以及vc++中设备环境类(CDC)的使用。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
Vc++环境下建立一个简单的c++图形程序、建立一个简单的mfc框架图形应用程序。
实验项目二:Vc++可视化图形程序开发基础12学时
(一)实验目的要求
熟悉vc++平台下菜单、对话框以及常用控件的程序设计方法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
Vc++环境下建立一个简单的mfc框架图形应用程序,程序通过菜单、对话框以及对话框内的控件实现程序的基本交互功能。
实验项目三:Vc++可视化图形程序开发基础22学时
(一)实验目的要求
熟悉vc++平台下图形编程涉及的基本类以及相关绘图函数的使用。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
Vc++环境下建立一个简单的mfc框架图形应用程序,程序通过菜单、对话框以及对话框内的控件实现程序的基本交互绘图功能。绘图中要使用cpen、cbrush等基本的图形程序设计类。
实验项目四:分形几何图形设计2学时
(一)实验目的要求
熟悉常见分形几何算法的绘图原理以及程序实现。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
根据给定算法,绘制Cator集,Koch曲线,Peano-Hilbert曲线,Sierpinski垫片,Sierpinski地毯,Sierpinski海绵,C字曲线,Caley树(可选区部分进行实验)。
实验项目五:直线的生成算法2学时
(一)实验目的要求
设计程序实现直线的几种常用生成算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序实现直线的DDA算法、中点算法、bresham算法。
实验项目六:圆的生成算法2学时
(一)实验目的要求
设计程序实现圆的几种常用生成算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序实现圆的中点算法、bresham算法。
实验项目七:椭圆的生成算法法2学时
(一)实验目的要求
设计程序实现椭圆的常用生成算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序实现椭圆的bresham算法。
实验项目八:区域填充算法2学时
(一)实验目的要求
设计程序实现图形填充的几种常用生成算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序实现图形的改进扫描线填充算法、边填充算法、八邻域种子填充算法。
实验项目九:图元属性处理2学时
(一)实验目的要求
设计程序实现直线的线型线宽处理。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
修改程序,把前面所有直线的算法修改为可设置宽度,线型。
实验项目十:二维几何变换2学时
(一)实验目的要求
设计程序实现二维图形的基本变换与复合变换。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序通过交互形式实现二维图形的平移、比例、对称、旋转、错且变换以及它们的复合变换。
实验项目十一:图形裁剪2学时
(一)实验目的要求
设计程序实现二维图形的基本裁剪算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序二维图形直线裁剪的Sutherland-Hodgman算法、中点算法;多边形裁剪的Sutherland-Hodgman算法、Weiler-Atherton算法。
实验项目十:三维几何变换2学时
(一)实验目的要求
设计程序实现三维图形的基本变换与复合变换。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序通过交互形式实现三维图形的平移、比例、对称、旋转、错且变换以及它们的复合变换。
实验项目十三:投影变换2学时
(一)实验目的要求
设计程序实现图形的投影算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序实现图形的平行投影、透视投影(含具体分类中的各种投影)算法。
实验项目十四:曲线曲面生成2学时
(一)实验目的要求
设计程序实现常见曲线曲面的算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序实现直线的DDA算法、中点算法、bresham算法。
实验项目十五:综合实验2学时
(一)实验目的要求
把所有算法集成到一个工程。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
把所有算法集成到一个工程中并完善图形交互过程。。
实验项目十六:模拟考试2学时
(一)实验目的要求
熟悉上机考试环境与题型。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
通过实际模拟考试熟悉上机考试过程以及题型。
实验项目十七*:使用OpenGL绘制基本图形2学时
(一)实验目的要求
熟悉使用OpenGL绘制基本图形的过程和方法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
熟悉建立opengl绘图程序的基本过程(c/c++环境,mfc框架下),熟悉opengl中基本图形的绘制(begin。。。。end)键盘鼠标事件的使用,菜单的建立。
实验项目十八*:OpenGL真实图形的绘制2学时
(一)实验目的要求
熟悉使用OpenGL真实图形的绘制过程与方法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
在c/c++环境或者mfc框架下建立一个真实图形绘制程序,画出一个通过鼠标以及键盘控制旋转的真实感立方体,立方体不同面有不同的画面(拍摄)或者不同纹理,不同的关照感。
五、实验报告要求
本课程以最终集成软件代替实验报告,学生最终把所有算法集成到一个具有友好交互界面(充分利用菜单、对话框以及对话框内的控件等手段实行人机交互)的图形学算法演示程序中(一个工程),工程的名字为学生姓名,工程需要上交所有原始工程文件(源代码)以及可执行程序。
六、课程考核方式及成绩评定
(一)考核方式
平时成绩:ð课堂提问//√学习态度//ð课外资料收集整理//ð预习报告//ð实验报告//√其他;
结课后考试:ð笔试//√操作(软件)。
(二)课程成绩评定办法
成绩构成:考勤10%//平时30%//考试60%
七、实验应配套的主要仪器设备及台(套)数(以一个实验教学班为标准)
主要仪器:微型电子计算机(安装vc++(6.0或者2010)开发环境)60台
附:教学参考资料
1、选用的教材:
陆枫,何云峰,计算机图形学基础(第二版),电子工业出版社,2008.10,第2版。
注:
教材选用要根据当前最新教材出版情况而定,此处指定教材仅供参考,教材选用总体原则是优先选用最新的优秀教材。
2、主要参考书:
[1]孙家广,计算机图形学,清华大学出版社,1998年9月,第3版。
[2]许承东,计算机图形技术,北京大学出版社,2011年9月,第2版。
[3]和青芳,计算机图形学原理及算法教程,清华大学出版社,2006.1,第1版。
3、其他参考资料:
学生自己确定
《计算机图形学实验》教学大纲
Experiments of Computer Graphics
课程代码:XF166008学时:32学分:1
理论学时:32实验或讨论学时:2
适用专业:计算机类、信息电子类等理工科 课程性质:选修
撰稿人:葛平俱审定人:牟少敏
一、实验课的性质与任务
计算机图形学是一个发展迅速的学科,但是学生在掌握中往往对图形学的复杂理论和方法不能真正理解和应用,造成了对计算机图形学这门课程的学习的局限。本实验课程紧紧围绕计算机图形学的理论和基本算法,以Visual C/C++(或其他可视化语言)和OpenGL为开发平台(选做),完成一系列图形试验,加深学生对图形学算法的理解,同时具备一定的二维、三维图形程序开发基础,为不久的毕业设计和未来踏入社会可能面对的与图形相关的工作打下坚实的基础。
二、实验目的与要求
1、实验目的
计算机图形学实验教学是为了将学生的计算机操作能力、分析能力、工程设计能力与应用实践结合起来,引导学生由浅入深地掌握计算机图形学理论与算法,使学生加深理解计算机图形学的基本概念、基本原理和基本算法;掌握和实现图形在计算机内显示的全过程,包括:基本图形的生成、坐标变换、图形投影、图形裁剪、图形消隐、基本的真实感显示等。掌握交互构图形能力,具备工程应用的图形学基础。
2实验要求
1) 学生应该具有线性代数和C/C++的基础,有数据结构的相应知识。
2) 上机前应准备好实验的程序设计算法描述与关键分析内容。
3) 准备好程序测试数据和设备操作步骤,上机调试、运行。
4) 完成每个实验后进行数据与程序对比分析。
5) 写出实验报告(含实验题目,算法分析,源程序,测试情况和运行结果。若实验未能通过,给出原因与今后改进措施)。
6)上交所有算法演示程序(源代码)。
三、实验项目设置情况
序号 | 实验项目名称 | 学时 | 开出要求 | 实验项目类型 |
必做 | 选做 | 基础型 | 综合设计 | 研究创新 |
演示 | 验证 |
1 | Vc++平台下图形开发过程 | 2 | 必做 |
| 演示 | | | |
2 | Vc++可视化图形程序开发基础1 | 2 | 必做 |
| 演示 | |
|
|
3 | Vc++可视化图形程序开发基础2 | 2 | 必做 | | 演示 | | | |
4 | 分形几何图形设计 | 2 | 必做 | | | 验证 | | |
5 | 直线的生成算法 | 2 | 必做 | | | 验证 | | |
6 | 圆的生成算法 | 2 | 必做 | | | 验证 | | |
7 | 椭圆的生成算法 | 2 | 必做 | | | 验证 | | |
8 | 区域填充算法 | 2 | 必做 | | | 验证 | | |
9 | 图元属性处理 | 2 | 必做 | | | 验证 | | |
10 | 二维几何变换 | 2 | 必做 | | | 验证 | | |
11 | 图形裁剪 | 2 | 必做 | | | 验证 | | |
12 | 三维几何变换 | 2 | 必做 | | | 验证 | | |
13 | 投影变换 | 2 | | 选做 | | 验证 | | |
14 | 曲线曲面生成 | 2 | | 选做 | | 验证 | | |
15 | 综合实验 | 2 | 必做 | | | | √ | |
16 | 模拟考试 | 2 | 必做 | | | | | |
17 | 使用OpenGL绘制基本图形 | 2 | | 选做 | | 验证 | | |
18 | OpenGL真实图形的绘制 | 2 | | 选做 | | 验证 | | |
四、各实验项目教学内容
实验项目一:Vc++平台下图形开发过程2学时
(一)实验目的要求
熟悉vc++平台下图形程序开发的基本过程以及vc++中设备环境类(CDC)的使用。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
Vc++环境下建立一个简单的c++图形程序、建立一个简单的mfc框架图形应用程序。
实验项目二:Vc++可视化图形程序开发基础12学时
(一)实验目的要求
熟悉vc++平台下菜单、对话框以及常用控件的程序设计方法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
Vc++环境下建立一个简单的mfc框架图形应用程序,程序通过菜单、对话框以及对话框内的控件实现程序的基本交互功能。
实验项目三:Vc++可视化图形程序开发基础22学时
(一)实验目的要求
熟悉vc++平台下图形编程涉及的基本类以及相关绘图函数的使用。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
Vc++环境下建立一个简单的mfc框架图形应用程序,程序通过菜单、对话框以及对话框内的控件实现程序的基本交互绘图功能。绘图中要使用cpen、cbrush等基本的图形程序设计类。
实验项目四:分形几何图形设计2学时
(一)实验目的要求
熟悉常见分形几何算法的绘图原理以及程序实现。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
根据给定算法,绘制Cator集,Koch曲线,Peano-Hilbert曲线,Sierpinski垫片,Sierpinski地毯,Sierpinski海绵,C字曲线,Caley树(可选区部分进行实验)。
实验项目五:直线的生成算法2学时
(一)实验目的要求
设计程序实现直线的几种常用生成算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序实现直线的DDA算法、中点算法、bresham算法。
实验项目六:圆的生成算法2学时
(一)实验目的要求
设计程序实现圆的几种常用生成算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序实现圆的中点算法、bresham算法。
实验项目七:椭圆的生成算法法2学时
(一)实验目的要求
设计程序实现椭圆的常用生成算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序实现椭圆的bresham算法。
实验项目八:区域填充算法2学时
(一)实验目的要求
设计程序实现图形填充的几种常用生成算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序实现图形的改进扫描线填充算法、边填充算法、八邻域种子填充算法。
实验项目九:图元属性处理2学时
(一)实验目的要求
设计程序实现直线的线型线宽处理。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
修改程序,把前面所有直线的算法修改为可设置宽度,线型。
实验项目十:二维几何变换2学时
(一)实验目的要求
设计程序实现二维图形的基本变换与复合变换。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序通过交互形式实现二维图形的平移、比例、对称、旋转、错且变换以及它们的复合变换。
实验项目十一:图形裁剪2学时
(一)实验目的要求
设计程序实现二维图形的基本裁剪算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序二维图形直线裁剪的Sutherland-Hodgman算法、中点算法;多边形裁剪的Sutherland-Hodgman算法、Weiler-Atherton算法。
实验项目十:三维几何变换2学时
(一)实验目的要求
设计程序实现三维图形的基本变换与复合变换。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序通过交互形式实现三维图形的平移、比例、对称、旋转、错且变换以及它们的复合变换。
实验项目十三:投影变换2学时
(一)实验目的要求
设计程序实现图形的投影算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序实现图形的平行投影、透视投影(含具体分类中的各种投影)算法。
实验项目十四:曲线曲面生成2学时
(一)实验目的要求
设计程序实现常见曲线曲面的算法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
设计程序实现直线的DDA算法、中点算法、bresham算法。
实验项目十五:综合实验2学时
(一)实验目的要求
把所有算法集成到一个工程。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
把所有算法集成到一个工程中并完善图形交互过程。。
实验项目十六:模拟考试2学时
(一)实验目的要求
熟悉上机考试环境与题型。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
通过实际模拟考试熟悉上机考试过程以及题型。
实验项目十七*:使用OpenGL绘制基本图形2学时
(一)实验目的要求
熟悉使用OpenGL绘制基本图形的过程和方法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
熟悉建立opengl绘图程序的基本过程(c/c++环境,mfc框架下),熟悉opengl中基本图形的绘制(begin。。。。end)键盘鼠标事件的使用,菜单的建立。
实验项目十八*:OpenGL真实图形的绘制2学时
(一)实验目的要求
熟悉使用OpenGL真实图形的绘制过程与方法。
(二)实验材料和仪器设备
微型计算机、vc++6.0(或者vc++2010)开发环境。
(三)实验内容
在c/c++环境或者mfc框架下建立一个真实图形绘制程序,画出一个通过鼠标以及键盘控制旋转的真实感立方体,立方体不同面有不同的画面(拍摄)或者不同纹理,不同的关照感。
五、实验报告要求
本课程以最终集成软件代替实验报告,学生最终把所有算法集成到一个具有友好交互界面(充分利用菜单、对话框以及对话框内的控件等手段实行人机交互)的图形学算法演示程序中(一个工程),工程的名字为学生姓名,工程需要上交所有原始工程文件(源代码)以及可执行程序。
六、课程考核方式及成绩评定
(一)考核方式
平时成绩:ð课堂提问//√学习态度//ð课外资料收集整理//ð预习报告//ð实验报告//√其他;
结课后考试:ð笔试//√操作(软件)。
(二)课程成绩评定办法
成绩构成:考勤10%//平时30%//考试60%
七、实验应配套的主要仪器设备及台(套)数(以一个实验教学班为标准)
主要仪器:微型电子计算机(安装vc++(6.0或者2010)开发环境)60台
附:教学参考资料
1、选用的教材:
陆枫,何云峰,计算机图形学基础(第二版),电子工业出版社,2008.10,第2版。
注:
教材选用要根据当前最新教材出版情况而定,此处指定教材仅供参考,教材选用总体原则是优先选用最新的优秀教材。
2、主要参考书:
[1]孙家广,计算机图形学,清华大学出版社,1998年9月,第3版。
[2]许承东,计算机图形技术,北京大学出版社,2011年9月,第2版。
[3]和青芳,计算机图形学原理及算法教程,清华大学出版社,2006.1,第1版。
3、其他参考资料:
学生自己确定