




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机图形学实验报告实验报告文件命名方式:学号姓名_实验序号_实验名称.doc姓名学号专业任课教师实验教师评阅教师实验地点书写日期2013-8-7实验课时间实验得分实验序号与名称:实验十 交互的3D漫游世界实验目的:1) 进一步掌握3D编程概念: 2)主要掌握视点和目标的改变对场景生成的影响 3)掌握3D漫游场景的基本技巧实验开发环境:硬件要求:PC机,主流配置,最好为独立显卡,显存512M以上。 软件环境:操作系统:Windows XP。语言开发工具:Microsoft Visual studio 2008,Visual C+。 并安装OpenGL图形函数库实验要求:1.当场检查,计现场分2
2、.实验所有步骤所生成的效果截图拷贝到实验报告文档里备查,并附上相应的代码。 WORD文档命名方式:学号姓名-实验序号-实验名称。实验内容与步骤小结、主要截图、核心代码实现:比例:50%#include stdafx.h#include 3Dshijie.h#include #include #define PI 3.14159float theta=-90.0; /rotating angle小球旋转角int inner=10,outer=80; /toruss inner & outer radius内径外径float s=outer+4*inner+50; float eyex=0,eye
3、y=0,eyez=s; /eye point initial positionfloat atx=0,aty=0,atz=0; /at point initial positionint ww,hh; /variable for windowss width /bool flag=true;double angle=0;/漫游移动旋转角float step=0.1*s;/步长为视点到目标点的距离void Display(void);void Reshape(int w, int h);void mytime(int value);void drawground();/地板天花void draw
4、sphere();/环+球void drawwall();/墙void init();void mykeyboard(unsigned char key, int x, int y);int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);char *argv = hello , ;int argc = 2; / m
5、ust/should match the number of strings in argvglutInit(&argc, argv); /初始化GLUT库;glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); /设置显示模式;(缓冲,颜色类型)glutInitWindowSize(500, 500);glutInitWindowPosition(1024 / 2 - 250, 768 / 2 - 250);glutCreateWindow(Rotating 3D World); /创建窗口,标题为“Rotating 3D World”;glutReshap
6、eFunc(Reshape);init();glutDisplayFunc(Display); /用于绘制当前窗口;glutKeyboardFunc(mykeyboard);glutTimerFunc(100,mytime,10);glutMainLoop(); /表示开始运行程序,用于程序的结尾;return 0;void init()glClearColor(1,1,1,1);glPixelStorei(GL_PACK_ALIGNMENT, 1);glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);void mykeyboard(unsigned char k
7、ey, int x, int y)switch(key) case W:case w:/ 向前直走旋转角angle不变,平移量为步长*sin/cos(angle)/your code Hereeyex=eyex-step*sin(angle);eyez=eyez-step*cos(angle);atx=atx-step*sin(angle);atz=atz-step*cos(angle);break;case S:case s:/向后退/your code Hereeyex=eyex+step*sin(angle);eyez=eyez+step*cos(angle);atx=atx+step*
8、sin(angle);atz=atz+step*cos(angle);break;case A:case a:/左看/your code Here视点不变,目标点绕视点旋转angle+=0.1;atx=eyex-x*sin(angle);atz=eyex-x*cos(angle);break;case D:case d:/右看/your code Hereangle-=0.1;atx=eyex-x*sin(angle);atz=eyex-x*cos(angle);break; glutPostRedisplay();/参数修改后调用重画函数,屏幕图形将发生改变void Display(void
9、) /glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glClear(GL_COLOR_BUFFER_BIT);glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(eyex,eyey,eyez,atx,aty,atz,0,1,0);glPushMatrix();/旋转茶壶glRotated(theta,0,1,0);glColor3f(0,0,1);glutWireTeapot(30);glPopMatrix();glPushMatrix();glColor3f(0.0,0.0,1.0);
10、drawwall();glColor3f(1.0,0,0);drawground(); drawsphere();/画球+环glPopMatrix();glutSwapBuffers();void drawsphere()float tr;tr=(outer+3*inner);glRotatef(theta,0,1,0);glPushMatrix();glPushMatrix();glColor3f(1.0,0,1.0);glutWireTorus(inner,outer,30,50); glPopMatrix();glPushMatrix(); glTranslatef(outer,0,0)
11、;glRotatef(theta,0,1,0);glTranslatef(-outer,0,0);glPushMatrix(); glTranslatef(tr,0,0);glRotatef(-45,1,0,0);glColor3f(0.0,1.0,0);glutWireSphere(inner,20,20);glPopMatrix();glPopMatrix();glPopMatrix();void drawground()/groundfor (int i=-outer-4*inner;iouter+4*inner;i+=2*inner) for (int j=-outer-4*inner
12、;jouter+4*inner;j+=2*inner) glBegin(GL_QUADS);glVertex3d(j,-outer-4*inner,i); glVertex3d(j,-outer-4*inner,i+2*inner);glVertex3d(j+2*inner,-outer-4*inner,i+2*inner);glVertex3d(j+2*inner,-outer-4*inner,i); glEnd();/topfor ( int i=-outer-4*inner;iouter+4*inner;i+=2*inner) for (int j=-outer-4*inner;jout
13、er+4*inner;j+=2*inner) glBegin(GL_QUADS);glVertex3d(j,outer+4*inner,i); glVertex3d(j,outer+4*inner,i+2*inner);glVertex3d(j+2*inner,outer+4*inner,i+2*inner);glVertex3d(j+2*inner,outer+4*inner,i); glEnd();void drawwall() int i,j;glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);/leftfor (i=-outer-4*inner;ioute
14、r+4*inner;i+=2*inner) for (j=-outer-4*inner;jouter+4*inner;j+=2*inner) glBegin(GL_QUADS);glVertex3d(-outer-4*inner,j,i); glVertex3d(-outer-4*inner,j+2*inner,i);glVertex3d(-outer-4*inner,j+2*inner,i+2*inner);glVertex3d(-outer-4*inner,j,i+2*inner); glEnd();/rightfor (i=-outer-4*inner;i=outer+4*inner-2
15、*inner;i+=2*inner) /for zfor (j=-outer-4*inner;j=outer+4*inner-2*inner;j+=2*inner) /for y glBegin(GL_QUADS);glVertex3f(outer+4*inner,j,i); glVertex3f(outer+4*inner,j+2*inner,i);glVertex3f(outer+4*inner,j+2*inner,i+2*inner);glVertex3f(outer+4*inner,j,i+2*inner); glEnd(); glColor3f(1.0,1.0,0.0);/frontfor (i=-outer-4*inner;i=outer+4*inner-2*inner;i+=2*inner) /for zfor (j=-outer-4*inner;j=360.0) theta-=360.0; glutPostRedisplay();glutTimerFunc(100,mytime,10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年陕西省西安市交通大附属中学八年级英语第二学期期中监测试题含答案
- 2025年建筑施工安全管理信息化对施工现场安全管理的企业战略目标优化策略优化报告
- 2025年工业互联网平台网络流量整形技术在工业互联网平台产业融合中的应用报告001
- 2025年医药企业研发外包(CRO)模式创新与实践案例深度解析报告
- 风电光伏培训课件
- 北京初中化学题库及答案
- 保险师考试试题及答案
- 安全救护知识试题及答案
- 2025年金融数据治理与资产化:金融行业数据共享平台建设报告
- 医院重点科室培训课件
- DB12T 1179-2023 泥态固化土道路填筑技术规程
- 西安市绿化养护管理标准
- 学校机房网络规划与设计
- 开标一览表(模板)
- 建筑工程公司安全生产责任制度
- 2009-2022历年河北省公安厅高速交警总队招聘考试真题含答案带详解2022-2023上岸资料汇编3
- 湖北恩施州法院系统招考聘用雇员制审判辅助人员111名模拟卷含答案
- 被执行人财产申报表
- 人教版五年级语文(下册)期末试卷(附答案)
- 信用修复申请书
- 深圳房地产开发企业资质申报表
评论
0/150
提交评论