- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OpenGL自行车
GIS专业实验报告(计算机图形学)
实验4 使用opengl进行层次模型的编程设计------以简单自行车模型为例
姓名 系别班级 学号 实验日期 指导教师 实验成绩 实验目的及要求
用c++调用opengl图形函数库,通过显示列表的嵌套实现复杂物体的层次建模。设计一个包含框架和两个轮子的自行车。
理论基础
显示列表:
显示列表是一组OpenGL函数调用,它被存储起来供以后执行。这样就可以将基本图素的OpenGL函数实现组织起来,指定名称,构成图段,所构成的图段可以再以后需要的地方显示出来。
创建显示列表方式如下:
glNewList(listID,listMode);
glutSoildCube(2.0);
……
glEndList();
显示列表的调用:
在显示列表创建之后,可以使用函数
Void glCallList(GLuint listID);
调用显示列表,其中参数listID是已定义的显示列表标识。
OpenGL画线函数:
glBegin(GL_LINES);
glVertex2i(x1,y1);
glVertex2i(x2,y2);
glEnd();
OpenGL画圆函数:
glNewList(Wheel, GL_COMPILE);
glutSolidTorus(线宽,半径, 15, 50);
glEndList();
OpenGL绘制闭合画线函数:
glBegin(GL_LINE_LOOP);
glVertex2i(x1,y1);
glVertex2i(x2,y2);
glVertex2i(x3,y3);
… …
glEnd();
算法设计与分析
程序源码如下:
#include windows.h
#include gl/glut.h
GLuint Wheel;
GLuint Frame;
void Initial(void)
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
Wheel = glGenLists(1);
glNewList(Wheel, GL_COMPILE);
glColor3f(255.0, 0.0, 0.0);
glTranslatef(-40.0, -30.0, 0.0);
glutSolidTorus(0.6, 25.0, 15, 50); //前轮
glutSolidTorus(0.15, 4.0, 15, 50); //前齿轮
/**********前轮前齿轮**********/
glColor3f(255.0, 0.0, 0.0);
glTranslatef(44.0, 0.0, 0.0);
glutSolidTorus(0.2, 7.0, 15, 50);
/**********中间齿轮**********/
glColor3f(255.0, 0.0, 0.0);
glTranslatef(40.0, 0.0, 0.0);
glutSolidTorus(0.6, 25.0, 15, 50);
glutSolidTorus(0.2, 4.0, 15, 50);
/**********后轮后齿轮**********/
glEndList();
Frame = glGenLists(1);
glNewList(Frame,GL_COMPILE);
glColor3f(0.0, 255, 0.0);
glLineWidth(2);
glTranslatef(-20.0, 0.0, 0.0);
glBegin(GL_LINES); //链条(上)
glVertex2i(26,-28);
glVertex2i(66,-31);
glEnd();
/**********链条(上)**********/
glBegin(GL_LINES); //链条 (下)
glVertex2i(26,-42);
glVertex2i(66,-39);
glEnd();
/**********链条(下)**********/
glColor3f(0.0, 0.0, 255.0);
glLineWidth(2);
glBegin(GL_LINES);
文档评论(0)