程编码:0921144005
课程目标和基本要求:
《计算机图形学》是信息与计算科学专业学生的专业选修课程.计算机图形学是计算机科学的重要分支,其应用已经日益广泛.该课程的教学目的与任务是让学生了解计算机图形学的基础内容,掌握对设计,使用和理解计算机图形系统所需的基本理论.
本课程实验包括图形的显示和输出技术,基本图形生成算法,图形的各种变换,曲线和曲面的绘制,图形的剪取,隐线和隐面的消除和产生有真实感图形的方法.用C++(或C)结合OpenGL图形库进行与理论教学配合的实验.
课程总学时: 54 学时 [理论: 36 学时;实验: 18 学时]
课程总学分: 2.5 学分
适用专业和年级:
信息与计算专业,4年级第1学期
实验项目汇总表:
序号
实验编号
实验名称
时数
实验类别
实验类型
实验要求
每组人数
实验一
092114400501
C++图形程序设计基础
2
专业
演示性
必修
同班级人数
实验二
092114400502
基本图元生成算法
2
专业
验证性
必修
同班级人数
实验三
092114400503
填充算法
2
专业
验证性
必修
同班级人数
实验四
092114400504
OpenGL基础
2
专业
验证性
必修
同班级人数
实验五
092114400505
二维变换
2
专业
验证性
必修
同班级人数
实验六
092114400506
二维裁剪
2
专业
验证性
必修
同班级人数
实验七
092114400507
样条曲线与样条曲面
2
专业
验证性
必修
同班级人数
实验八
092114400508
三维变换与三维观察
2
专业
验证性
必修
同班级人数
实验九
092114400509
真实感图形的生成与处理
2
专业
综合性
必修
同班级人数
八,大纲内容:
实验序号 1 实验名称 C++图形程序设计基础
[实验目的和要求]
以C++Builder为程序设计平台,熟悉Windows图形程序设计的要点,为今后的图形学实验打下必要的基础.
[实验内容]
1. 在C++Builder集成开发环境中编写一个Windows应用程序.应用程序的窗体中每隔1秒交替显示"Hello, World!" 和"世界,你好!".
2. 参考补充材料"利用C++Builder开发基于图形的应用程序",写一个图形学实验程序的框架.
[主要实验仪器与器材]
个人计算机
实验序号 2 实验名称 基本图元生成算法
[实验目的和要求]
1. 以C++Builder为程序设计平台,实现整数中点画线法和Bresenham画线法,绘制直线;
2. 以C++Builder为程序设计平台,实现圆的中点画法和椭圆的中点画法.
[实验内容]
1. 实现斜率k在0和1之间时的整数中点画线法和Bresenham画线法.
2. 选作:实现任意斜率的整数中点画线法和Bresenham画线法.
3. 利用中点画圆法,绘制第二个八分圆;利用中点画椭圆法,绘制第一象限内的四分之一椭圆.
4. 选作:利用上述基本算法及对称性,绘制整圆和整椭圆.(提示:因为绘图区域的原点在左上角,所以绘制整圆和整椭圆时要作平移变换.)
[主要实验仪器与器材]
个人计算机
实验序号 3 实验名称 填充算法
[实验目的和要求]
以C++Builder为程序设计平台,实现边缘填充算法与种子填充算法.
[实验内容]
1. 根据实验一中提供的图形学实验框架,编写程序实现边缘填充算法.
2. 根据实验一中提供的图形学实验框架,编写程序实现种子填充算法.
[主要实验仪器与器材]
个人计算机
实验序号 4 实验名称 OpenGL基础
[实验目的和要求]
以Visual C++为程序设计平台,练习编写简单的OpenGL入门程序.
[实验内容]
编制一个程序绘制GLUT中的三维茶壶模型,并编译运行.建议使用线框模型,也可尝试一下实体模型.
[主要实验仪器与器材]
个人计算机
实验序号 5 实验名称 二维变换
[实验目的和要求]
1. 了解OpenGL二维图形变换的三个函数及其计算机图形学的理论基础;
2. 尝试利用OpenGL编写一个二维图形变换的小程序.
[实验内容]
1. 在理解的基础上,编写一个基于OpenGL的程序,绘制一个三角形,并分别绘制这个三角形经平移,缩放,旋转后的结果.
2.(选作)仅利用C++Builder(不用OpenGL)编写一个程序,功能有平面图形的平移,缩放,错切,旋转等.
[主要实验仪器与器材]
个人计算机
实验序号 6 实验名称 二维裁剪
[实验目的和要求]
以C++Builder为程序设计平台,实现线段裁剪的Cohen-Sutherland算法和Liang-Barsky算法.
[实验内容]
实现Cohen-Sutherland算法和Liang-Barsky算法.要求程序界面上有裁剪窗口,能用鼠标画直线,然后用裁剪算法进行裁剪.
[主要实验仪器与器材]
个人计算机
实验序号 7 实验名称 样条曲线与样条曲面
[实验目的和要求]
1. 以C++ Builder为程序设计平台,练习编写B样条曲线的演示程序,理解相应的图形学原理和编程原理.
2. 以C++ Builder或Visual C++为程序设计平台,编写二次曲面,Bezier曲线曲面,NURBS曲线曲面的演示程序,理解相应的编程原理.
[实验内容]
1. 以C++ Builder为程序设计平台,写一个B样条曲线的演示程序,要求能够选择曲线的次数(2次或3次),能够选择均匀的和准均匀的B样条曲线,并且能够拖动已经画好的控制顶点来控制曲线.
2. 以C++ Builder或Visual C++为程序设计平台,编制课本第173页至191页的所有演示程序,自学相应的编程知识.
3. (选作)选择如下曲面的一种:二次曲面,Bezier 曲面,NURBS曲面,自行设定图形参数,加以绘制,并利用第八章所学的知识,转动视点,对该曲面进行观察.
[主要实验仪器与器材]
个人计算机
实验序号 8 实验名称 三维变换与三维观察
[实验目的和要求]
以Visual C++为程序设计平台,练习编写OpenGL三维图形变换程序,理解相应的图形学原理和编程原理.
[实验内容]
1 .编制书P221, 231上的程序,并编译运行.理解矩阵堆栈,图形变换函数的原理,掌握其用法.
2.编制书P225上的程序并编译运行,并对程序作如下修改,然后编译运行,同时体会gluPerspective(), gluLookAt(), glTranslate*()等函数的作用.
1)将程序中gluPerspective()的第一个参数fovy改为30.0和70.0,观察程序的效果,思考并回答为什么会出现这样的效果.
2)将函数glTranslatef()的第三个参数分别改为1.0和-1.0,观察,思考并回答为什么会出现这样的效果.
3)将glTranslatef()改为效果不变的对应的函数gluLookAt().
3. 练习安装C++Builder上的OpenGL控件;并学习如何利用该控件开发OpenGL程序.将所给的cube.c转换为在C++Builder上的程序.将*.cpp文件和*.h文件贴在这里.
4.(选作)利用OpenGL开发一个完整的二维或三维图形变换的演示程序.
[主要实验仪器与器材]
个人计算机
实验序号 9 实验名称 真实感图形的生成与处理
[实验目的和要求]
1. 以C++ Builder或Visual C++为程序设计平台,编写有关着色处理,光照,材质,纹理的演示程序,理解相应的编程原理.
2. 综合运用本课程所学的有关知识,编写具有一定真实感效果的程序.
[实验内容]
1 . 以C++ Builder为程序设计平台,编制一个演示程序,程序的效果为一个两面材质不同的波纹状曲面片,曲面片可用鼠标拖动旋转.
2. 以C++ Builder为程序设计平台,编制一个演示程序,程序的效果为一个两面材质不同的波纹状曲面片,在曲面的两面贴上纹理,曲面片可用鼠标拖动旋转.
3. 以C++ Builder为程序设计平台,编制程序演示一个可以滚动的立方体,立方体表面具有纹理贴图,并具有半透明效果.
[主要实验仪器与器材]
个人计算机
九,主要实验教材(指导书)及参考用书:
教材:《计算机图形学》 成思源等 冶金工业出版社2003
参考书:《计算机图形学》 孙家广等 清华大学出版社2000
十,课程考核方式及成绩评定办法:
该实验课程不单独设课,其考核方式及成绩评定纳入相应的理论课课程中进行.