- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机图形学
实 验 报 告 书
姓名:
班级:
学号:
中南大学软件学院
二0一一年六月
一.实验的任务、性质与目的
计算机图形学是软件工程专业的一门专业技术课程。计算机图形学应用于生产、工程、文化和艺术等领域,该课程对于培养和提高学生的算法设计和实现能力具有非常重要的意义。
该课程以培养学生算法设计与实现的能力为目标,通过课堂教学和实验,使学生了解、掌握计算机图形学的基本知识和关键技术、了解和熟悉计算机图形学的方法、工具和环境。
二.基本原理
实验主要基于如下知识和内容:
实验环境配置、基本图元绘制;
绘制抛物线和正弦曲线;
图形变换;
颜色和光照,绘制旋转抛物面;
显示列表;
纹理映射;
复杂图形绘制,绘制Bezier曲线,Hermite曲线;
复杂图形绘制,绘制Bezier曲面。
三.实验选题与基本要求
1、实验环境配置、基本图元绘制
配置基本实验环境、安装软件包、建立工程和绘制基本图元,要求学会点、线、三角形、四边形的绘制方法,学会消息传递和响应机制,用一个实例完成上述要求。
2、绘制抛物线和正弦曲线
计算抛物线和正弦曲线,将结果存放在一个数组中,再用OpenGL函数绘制相应的图形。
3、图形变换
要求学会投影、视口变换、旋转、平移和缩放的编程方法,用一个实例完成上述要求。
4颜色和光照
要求学会光源设置、材质设置和法向量设置,用一个实例(如旋转抛物面)完成上述要求。
5、显示列表
要求学会用显示列表输出文字和图形,用一个实例完成上述要求。
6、纹理映射
要求学会将纹理图像映射到物体表面,用一个实例完成上述要求。
7、复杂图形绘制
要求学会Bezier曲线和Hermite曲线的绘制方法。
8、复杂图形绘制
绘制Bezier曲面,要求设置光源、材质和法向量,并进行纹理映射,用键盘控制是否进行纹理映射。
四.实验内容和步骤
1、实验环境配置、基本图元绘制
配置基本实验环境、安装软件包、建立工程和绘制基本图元,要求学会点、线、三角形、四边形的绘制方法,学会消息传递和响应机制,用一个实例完成上述要求。
步骤:
基本实验环境:Win 7
实验工具:Microsoft visual C++ 6.0 , Visual Assist X 10.1.1626
实验实例:
画线:
#include GL/glut.h
#include stdlib.h
#include stdio.h
static float rotAngle = 0.;
void init(void)
{
GLfloat values[2];
glGetFloatv (GL_LINE_WIDTH_GRANULARITY, values);
printf (GL_LINE_WIDTH_GRANULARITY value is %3.1f\n, values[0]);
glGetFloatv (GL_LINE_WIDTH_RANGE, values);
printf (GL_LINE_WIDTH_RANGE values are %3.1f %3.1f\n,
values[0], values[1]);
glEnable (GL_LINE_SMOOTH);
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glHint (GL_LINE_SMOOTH_HINT, GL_DONT_CARE);
glLineWidth (1.5);
glClearColor(0.0, 0.0, 0.0, 0.0); //将背景设置为黑色
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);//清除缓存
glColor3f (1.0, 1.0, 1.0); //设置颜色为白色
glPushMatrix();
glRotatef(-rotAngle, 0.0, 0.0, 0.1);
glBegin (GL_LINES); //开始画线
glVertex2f (-0.5, 0.5); //设置第一根线的两个端点
glVertex2f (0.5, -0.5);
glEnd (); //画线结束
glPopMatrix();
glColor3f (2.0, 0.0, 0.0); //设置颜色为红色
glPushMatrix();
glRotatef(rotAngle
文档评论(0)