下载此文档

opengl立方体的简单三维交互式几何变换实验报告+代码.doc


文档分类:IT计算机 | 页数:约15页 举报非法文档有奖
1/ 15
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/ 15 下载此文档
文档列表 文档介绍
该【opengl立方体的简单三维交互式几何变换实验报告+代码 】是由【办公资源】上传分享,文档一共【15】页,该文档可以免费在线阅读,需要了解更多关于【opengl立方体的简单三维交互式几何变换实验报告+代码 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。立方体的简单三维交互式几何变换
这个学期对opengl的学习,使我对计算机图形学的一些算法过程有了更多的了解。因为对三维图形的显示比较感兴趣,就做了立方体的简单三维交互式几何变换。
功能:键盘的方向键实现立方体的上下左右平移;A键,S键分别实现向前,向后旋转;J键,K键分别实现放大,缩小;C键退出。
程序模块:
.
void DrawBo__()
{
glBegin(GL_QUADS);

//前面
glColor3f(1,0,0);
glVerte__3f(—1。0f, —1。0f, 1。0f); // 四边形的左下
glVerte__3f( , —1。0f, 1。0f); // 四边形的右下
glVerte__3f( 1。0f, 1。0f, ); // 四边形的右上
glVerte__3f(-1。0f, , 1。0f); // 四边形的左上
// 后面
glColor3f(0,1,0);
glVerte__3f(-1。0f, -, -1。0f); // 四边形的右下
glVerte__3f(—1。0f, 1。0f, —); // 四边形的右上
glVerte__3f( 1。0f, , —1。0f); // 四边形的左上
glVerte__3f( 1。0f, -, -); // 四边形的左下
// 顶面
glColor3f(0,0,1);
glVerte__3f(-1。0f, 1。0f, —1。0f); // 四边形的左上
glVerte__3f(-, 1。0f, ); // 四边形的左下
glVerte__3f( , , 1。0f); // 四边形的右下
glVerte__3f( , , -); // 四边形的右上
// 底面
glColor3f(1,1,0);
glVerte__3f(—1。0f, -, -1。0f); // 四边形的右上
glVerte__3f( , —, -1。0f); // 四边形的左上
glVerte__3f( , —1。0f, 1。0f); // 四边形的左下
glVerte__3f(—1。0f, -, ); // 四边形的右下
// 右面
glColor3f(0,1,1);
glVerte__3f( 1。0f, —, -); // 四边形的右下
glVerte__3f( , , —1。0f); // 四边形的右上
glVerte__3f( 1。0f, , ); // 四边形的左上
glVerte__3f( , —, 1。0f); // 四边形的左下
// 左面
glColor3f(1,0,1);
glVerte__3f(-, —, -1。0f); // 四边形的左下
glVerte__3f(—1。0f, -1。0f, ); // 四边形的右下
glVerte__3f(-, , ); // 四边形的右上
glVerte__3f(—, , -); // 四边形的左上
glEnd();
}
2.该模块设置屏幕颜色和深度缓存,设置立方体的平移,缩放,旋转变换。
void display()

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); //清空颜色和深度缓存
glMatri__Mode(GL_MODELVIEW);
glLoadIdentity();
//gluLookAt(2。0, 2。0, 2。0, , 0。0, , , , );
glTranslatef(+t__,0。0f+ty,—);//平移变换
glScalef(1+sf,1+sf,1+sf); //缩放变换
glRotatef(rat__, , 0。0f, );//绕__轴的旋转变换
glRotatef(ratY, 0。0f, 1。0f, 0。0f);//绕Y轴的旋转变换
glRotatef(ratZ, 0。0f, 0。0f, );//绕Z轴的旋转变换
DrawBo__();
glFlush();
glutSwapBuffers();
}
,在窗口首次创建或用户改变窗口尺寸时被调用。
void reshape(int w, int h)

glViewport(0, 0, w, h);// 指定视口的位置和大小
glMatri__Mode(GL_PROJECTION);
glLoadIdentity();
//glFrustum(-, , —, , , 10。0);
//gluPerspective(45,1,,10。0);
glOrtho(-, , -2。0, 2。0, , );
}

void init()

glClearColor (, 1。0, 1。0, 1。0);
glEnable(GL_DEPTH_TEST); //启动深度测试模式

5。该模块为设置键盘的交互式操作。
void myKeyboard(unsigned char key, int __, int y)
{
if(key == ’a’ || key == 'A')
rat__ += 2;
ratY += 2;
ratZ += 2;
if(key == ’s' || key == ’S')
rat__ -= 2;
ratY —= 2;
ratZ -= 2;
if(key == ’j’ || key == 'J’)
sf+=;
if(key == ’k’ || key == 'K')
sf-=;
if(key == 'c' || key == ’C’)
e__it(0);
glutPostRedisplay(); //重新调用绘制函数

6。该模块为设置键盘方向键的交互式操作。
void myspecialKeyboard(int key,int __,int y){
if(key == GLUT_KEY_UP )
ty+=;
if(key == GLUT_KEY_DOWN)
ty—=;
if(key ==GLUT_KEY_LEFT)
t__—=;
if(key==GLUT_KEY_RIGHT)
t__+=0。1;
glutPostRedisplay();
}
,实现设置显示模式(窗口大小,位置),调用函数操作.
int main(int argc, char** argv)

glutInit(&argc,argv); // 初始 GLUT.
glutInitDisplayMode (GLUT_DEPTH |GLUT_DOUBLE | GLUT_RGB); //设定显示模式
glutInitWindowSize(400,400); // 设定窗口大小
glutInitWindowPosition(50,100); // 设定窗口位置
glutCreateWindow(”立方体的简单三维交互式几何变换"); // 用前面指定参数创建
glutReshapeFunc(reshape); //指定重绘回调函数
glutDisplayFunc(display); // 进行一些初始化工作
glutKeyboardFunc( myKeyboard); //指定键盘回调函数
glutSpecialFunc(myspecialKeyboard); //指定键盘回调函数
init();
glutMainLoop();// 进入无穷循环,等待事件处理
}
功能截图:
立方体的平移:
上平移
下平移:
左平移:
右平移:
放大:
缩小:
旋转:
源程序:
#include <stdlib。h>
#include <GL/glut。h〉
〈〉
float rat__ = 60;
float ratY = 60;
float ratZ = 60;
float t__=0;
float ty=0;
float sf=0;
void DrawBo__()

glBegin(GL_QUADS);
//前面
glColor3f(1,0,0);
glVerte__3f(—1。0f, -, ); // 四边形的左下

opengl立方体的简单三维交互式几何变换实验报告+代码 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数 15
  • 收藏数 0 收藏
  • 顶次数 0
  • 上传人 办公资源
  • 文件大小 104 KB
  • 时间2026-04-17
最近更新