OpenGL自行车.doc_第1页
OpenGL自行车.doc_第2页
OpenGL自行车.doc_第3页
OpenGL自行车.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

GIS专业实验报告(计算机图形学)实验4 使用opengl进行层次模型的编程设计-以简单自行车模型为例姓名系别班级学号实验日期指导教师实验成绩殷悦地信10.420102034822013.6.12肖燕一 实验目的及要求用c+调用opengl图形函数库,通过显示列表的嵌套实现复杂物体的层次建模。设计一个包含框架和两个轮子的自行车。二 理论基础1. 显示列表:2. 显示列表的调用:3. OpenGL划线函数:4. OpenGL画圆函数:5. OpenGL绘制闭合画线函数:三 算法设计与分析程序源码如下: #include #include GLuint Wheel;GLuint Frame; void Initial(void)glClearColor(1.0f, 1.0f, 1.0f, 1.0f); Wheel = glGenLists(1);glNewList(Wheel, GL_COMPILE);glColor3f(1.0, 0.0, 1.0);glTranslatef(-42.0, -30.0, 0.0);glutSolidTorus(0.3, 20.0, 15, 1000); /线条粗细,半径, /*前轮*/glColor3f(1.0, 0.0, 1.0);glTranslatef(84.0, 0.0, 0.0);glutSolidTorus(0.3, 20.0, 15, 50); /*后轮*/glColor3f(1.0, 0.0, 1.0);glTranslatef(-84.0, 0.0, 0.0);glutSolidTorus(0.2, 5.0, 15, 50);/*前齿轮*/ glColor3f(0.0, 1.0, 0.0);glTranslatef(40.0, 0.0, 0.0);glutSolidTorus(0.2, 7.0, 15, 50);/*中间齿轮*/ glColor3f(0.0, 1.0, 0.0);glTranslatef(44.0, 0.0, 0.0);glutSolidTorus(0.2, 5.0, 15, 50);/*后齿轮*/ glEndList();Frame = glGenLists(1);glNewList(Frame, GL_COMPILE);glColor3f(0.0, 0.0, 1.0);glLineWidth(3);glTranslatef(-20.0, 20.0, 0.0); glBegin(GL_LINES); /三角形支架 glVertex2i(-10,5); glVertex2i(50,5); glEnd(); glBegin(GL_LINES); glVertex2i(-10,5); glVertex2i(20,-35); glEnd(); glBegin(GL_LINES); glVertex2i(20,-35); glVertex2i(50,5); glEnd(); /*三角形支架*/ glBegin(GL_LINES); /前轮连杆 glVertex2i(-6,20); glVertex2i(-20,-35); glEnd(); /*前轮连杆*/ glBegin(GL_LINES); /车把 glVertex2i(-15,21); glVertex2i(3,19); glEnd(); glBegin(GL_LINES); glVertex2i(-15,21); glVertex2i(-8,25); glEnd(); glBegin(GL_LINES); glVertex2i(3,19); glVertex2i(9,23); glEnd(); /*车把*/ glBegin(GL_LINES); /后轮连杆 glVertex2i(50,5); glVertex2i(64,-35); glEnd(); glBegin(GL_LINES); glVertex2i(50,5); glVertex2i(50,6 ); glEnd(); glBegin(GL_LINES); glVertex2i(20,-35); glVertex2i(25,-45); glEnd(); glBegin(GL_LINES); glVertex2i(25,-45); glVertex2i(22,-48); glEnd(); /*后轮连杆*/glColor3f(0.5, 1, 0.5);glLineWidth(2); glBegin(GL_LINES); /链条(上) glVertex2i(20,-28); glVertex2i(64,-30); glEnd(); /*链条(上)*/ glBegin(GL_LINES); /链条 (下) glVertex2i(20,-42); glVertex2i(64,-40); glEnd(); /*链条(下)*/ /*车座*/glColor3f(1.0, 0.5, 0.0);glLineWidth(3); glBegin(GL_LINE_LOOP); /车座 glVertex2i(45,10); glVertex2i(44,9); glVertex2i(44,8); glVertex2i(55,5); glVertex2i(55,6); glVertex2i(55,7); glVertex2i(54,12); glVertex2i(53,13); glEnd();glEndList();void ChangeSize(int w, int h)glViewport(0, 0, w, h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D (-70.0f, 70.0f, -70.0f, 70.0f);void Display(void)glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_MODELVIEW);glLoadIdentity();glTranslatef(0.0, 0.0, 0.0); glCallList(Frame); /调用支架显示列表glTranslatef(22.0, -5.0, 0.0);glCallList(Wheel); /调用轮子显示列表glFlush(); int main(int argc, char* argv)glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(800,600); glutInitWindowPosition(200,200); glutCreateWindow(OpenGL二维自行车姓名:殷悦学号:2010203482); glutDisplayFunc(Display);glutReshapeFunc(ChangeSize);Initial(); glutMainLoop(); return 0;四 程序调试及运行结果的自我分析与自我评价大家根据自己能力调试自行车。下面是参考。代码中调用了三个OpenGL函数,利用OpenGL画线函数绘制出了自行车的框架、车把、链条,利用OpenGL画圆函数绘制出了自行车前后轮以及前后齿轮,利用OpenGL闭合画线函数绘制出了自行车车座,并用显示列表对各个部分进行管理,最终绘制成了一个简易的二维自行车。并对自行车的不同部位设置了不同的颜色,以增强其美观度。精力有限,本作品整体比较简单, 仅仅实现了自行车的二维简单表示,没有绘制出三维自行车。运行结果见下图1。图1 调试结果注:直接运行文件夹中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论