计算机图形学 实验指导书
计算机科学与信息工程学院
目录
实验一 OpenGL程序设计………………………………………….. 3 实验二 二维基本图元的生成 ……………………………………….7 实验三 二维图元的填充 ……………………………………………13 实验四 二维图形的几何变换 ……………………….…………..….18 实验五 裁剪………………………………………………………….. 23 实验六 自由曲线………………………………………………….. 26 实验七 造型技术………………………………………………….. 27 实验八 交互式技术……………………………………………….. 32 实验九 真实感图形的绘制……………………………………….. 37
1
计算机图形学实验指导
一、实验目的
??1、培养学生动手编程解决实际问题的能力。 ??2、训练学生分析问题和调试程序的能力。 ??3、锻炼学生撰写科技实验论文的能力。 二、实验要求 ??1、问题分析
??充分地分析和理解问题本身,弄清要求做什么,用什么算法。 ??2、程序设计
??(1)根据所采用的算法,设计数据结构,画出流程图并编程。 ??(2)最后准备调试程序的数据及测试方案。 ??3、上机调试
??(1)对程序进行编译,纠正程序中可能出现的语法错误。 ??(2)调试前,先运行一遍程序看看究竟将会发生什么。
??(3)如果情况很糟,根据事先设计的测试方案并结合现场情况进行错误跟踪,包括单步调试、设置观察窗输出中间变量值等手段。 ??4、整理实习报告 三、实验报告
??1、实验内容:采用的算法名称
??2、问题描述:包括目标、任务、条件约束描述等。
??3、设计:数据结构设计和核心算法设计。主要功能模块的输入,处理(算法框架)和输出。 ??4、测试范例:测试结果的分析讨论,测试过程中遇到的主要问题及所采用的解决措施。 ??5、心得:包括程序的改进设想,经验和体会。
??6、程序清单:源程序,其中包括变量说明及详细的注释。
2
实验一 OpenGL程序设计
一、实验学时 2学时 二、实验类型 学习型实验 三、实验目的和要求
初步了解OpenGL程序设计结构;了解OpenGL的基本数据类型、核心函数及辅助
函数的使用。 四、实验内容
1、综述
这次试验的目的主要是使大家初步熟悉OpenGL这一图形系统的用法,编程平台是Visual C++,它对OpenGL提供了完备的支持。
OpenGL提供了一系列的辅助函数,用于简化Windows操作系统的窗口操作,使我们能把注意力集中到图形编程上,这次试验的程序就采用这些辅助函数。 2、在VC中新建项目 ?
新建一个项目。
选择菜单File中的New选项,弹出一个分页的对话框,选中页Projects中的Win32 Console Application项,然后填入你自己的Project name,如Test,回车即可。VC为你创建一个工作区(WorkSpace),你的项目Test就放在这个工作区里。 ?
为项目添加文件
为了使用OpenGL,我们需要在项目中加入三个相关的Lib文件:glu32.lib、glaux.lib、opengl32.lib,这三个文件位于c:\\program files\\Microsoft Visual Studio\\vc98\\lib目录中。 选中菜单Project->Add To Project->Files项(或用鼠标右键),把这三个文件加入项目,在FileView中会有显示。这三个文件请务必加入,否则编译时会出错。或者将这三个文件名添加到Project->Setting->Link->Object/library Modules 即可。
点击工具条中New Text File按钮,新建一个文本文件,存盘为Test.c作为你的源程序文件,再把它加入到项目中,然后就可以开始编程了。
#include
glClearColor (0.0, 0.0, 0.0, 0.0); //将背景置成黑色
glShadeModel (GL_FLAT); //设置明暗处理 }
3
//用户的绘图过程
void CALLBACK display(void) {
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //清除缓存
glBegin(GL_LINES);
//开始画一根白线
glColor3f (1.0f, 1.0f, 1.0f); //设置颜色为白色
//设置第一根线的两个端点,请注意:OpenGL坐标系的原点是在屏幕左下角
glVertex2f(10.0f, 50.0f); glVertex2f(110.0f, 50.0f); glColor3f (1.0f, 0.0f, 0.0f); //设置颜色为红色
//设置第二根线的两个端点 glVertex2f(110.0f, 50.0f); glVertex2f(110.0f, 150.0f); glEnd();
//画线结束
glFlush (); //绘图结束 } // //主过程:
// 初始化Windows的窗口界面 // 并初始化OpenGL场景,绘图 int main(int argc, char** argv) {
auxInitDisplayMode (AUX_RGB); //初始化显示模式,采用RGB彩色系统。
auxInitPosition (0, 0, 400, 150); //初始化窗口位置、大小
4