《计算机图形学》
实 验 指 导 书
郗润平 编制
西北工业大学计算机学院
二○一六年十月 修订
说 明
根据我院《计算机图形学》教学大纲要求及课堂教学内容,参阅
其它院校本课程教学与实验课的内容,并结合学生和实验室的情况,
特编制本实验指导书供学生在上机实验课时参考使用。
本实验大纲择选与课程教学较为密切的若干实验,每个实验分别
给出了参考机时数,实验时可根据具体的机时安排情况选做。在附
录中简单地介绍了 Open GL 和 DirectX 3D 两个三维图形开发平台基
本概念和相关的主要函数,供感兴趣同学入门学习参考使用。
XRP 于 2008.3.15
补充了 MFC 中几种常用 DC 的使用说明等;(附录二 14)
补充了 VC 下 OpenGL 编程框架细节。(附录三)
于 2011.4.24
补充 MFC 菜单使用;(附录二 10)
补充了对话框使用;(附录二 11)
鼠标拾取点示例。(附录二 12)
于 2011.4.26
补充了工具条的使用 (附录二 13)
于 2013.3.14
增加附录三(二)9 修改 OnEraseBkgnd()函数,禁止重绘背景,避免动画时闪烁
于 Sydney 2014.1.18
增加附录二 EGE 图形库 于 NPU604 2016.10.20
i
目 录
说 明.............................................................................................................................................i
目 录............................................................................................................................................ii
实验一 直线生成算法................................................................................................................1
实验二 圆弧生成算法................................................................................................................2
实验三 窗口菜单交互界面........................................................................................................2
实验四 区域填充算法................................................................................................................3
实验五 裁剪算法算法................................................................................................................3
实验六 图形软件开发包/库应用..............................................................................................4
实验七 曲线的生成算法............................................................................................................4
实验八 曲面生成算法................................................................................................................5
实验九 二维图形变换................................................................................................................5
实验十 三维图形变换................................................................................................................5
实验十一 真实感图形................................................................................................................6
附 录............................................................................................................................................7
一、C 语言中图形函数及其用法.....................................................................................7
二、EGE 图形库..............................................................................................................16
三、VC 集成开发环境下基于 MFC 绘图......................................................................19
四、OpenGL 绘图............................................................................................................40
五、DirectX 3D 绘图.......................................................................................................47
六、实验报告模板...........................................................................................................51
七、《计算机图形学》上机实验评分标准..................................................................52
ii
XRP《计算机图形学》上机实验指导书
实验一 直线生成算法
一、实验教学目标与基本要求
1. 了解光栅图形显示器的工作原理和特点;
2. 学习 C/VC 环境下的基本绘图方法;
3. 实践与巩固直线的基本生成算法。
4. 掌握直线扫描转换算法的原理及实现;
二、实验课程内容 (2 学时)
基于光栅图形显示器,在 C 环境中生成不同粗细和线型的任意直线。
1. 了解光栅图形显示器的特点;
2. 熟悉 C 环境下图形程序的绘图方法;
3. 实践 DDA、中点及 Bresenham 基本算法,并至少用两种基本算法生成任
意直线;
i. 任意斜率:
-1≤k<0 , (50,400)(500,50);
0≤k≤1,如(50,50)(300,200):
1<|k|<∞, 如(50,50)(300,400);
k=∞,如(200,50)(200,400)。
ii. 任意起始点: 如(200,500)(100,200), (300,200) (50,50)
4. 改进方法,实现对直线实现线宽和线型(虚线、点划线等)的控制。
三、实验参考
有关 C 环境下绘图介绍请参见附录一,以下实例为绘制一条直线(TC 编译环境),供
上机实验时参考使用。
#include "graphics.h"
#include "string.h"
main()
{
int x0=50,y0=50,
x1=450,y1=450,color=3; //定义点(50,50),(450,450)和颜色 color
int x,y;
int gdriver=DETECT, gmode; //定义图形驱动程序和显示模式
initgraph(&gdriver,&gmode, ""); //图形方式初始化
cleardevice(); //清屏
y=y0;
for(x=x0;x<=x1;x++)
{
1
XRP《计算机图形学》上机实验指导书
putpixel(x,y,color); //用 colo 颜色绘制点(x,y)
y=y+1;
}
getch(); //让画面停住, 等按一下键盘再继续
closegraph(); //关闭图形方式
return(0);
}
注:VC 集成开发环境下基于 MFC 绘图可参考附录二
实验二 圆弧生成算法
一、实验教学目标与基本要求
1. 学习圆(弧)的基本生成算法;
2. 了解光栅图形显示器的工作原理和特点;
3. 实践圆(弧)的基本生成算法;
4. 掌握圆弧扫描转换算法的原理及实现;
5. 了解反走样技术。
二、实验课程内容 (2 学时)
基于光栅图形显示器,在 C 环境中生成任意圆弧,并实践反走样技术。
1. 巩固 C 环境下的绘图方法;
2. 用中点和 Bresenham 算法生成任意位置圆(弧);
3. 改进方法,实现线宽和线型的控制;
4. 利用反走样技术改进直线和圆弧的生成算法。
实验三 窗口菜单交互界面
一、实验教学目标与基本要求
1. 了解窗口系统有关概念,学习相关知识;
2. 了解和学习菜单相关与知识;
3. 理解交互的重要意义。
二、实验课程内容 (3 学时)
MS-Windows 环境下窗口、菜单交互界面实现。
三、实验参考
2