




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北师大珠海分校信息技术学院计算机图形学实验报告实验报告文件命名方式:学号姓名_实验序号_实验名称.doc姓名学号专业任课教师实验教师评阅教师实验地点书写日期2013-12-4实验课时间实验得分实验序号与名称:实验十一:光照与材质实验目的:1、进一步掌握3D编程概念: 2、了解和掌握三维场景中如何设置简单光照和材质效果 3、如何添加音乐程序实验开发环境:硬件要求:PC机,主流配置,最好为独立显卡,显存512M以上。 软件环境:操作系统:Windows XP。语言开发工具:Microsoft Visual studio 2008,Visual C+。 并安装OpenGL图形函数库实验要求:1.当场检查,计现场分2.实验所有步骤所生成的效果截图拷贝到实验报告文档里备查,并附上相应的代码。 WORD文档命名方式:学号姓名-实验序号-实验名称。实验内容与步骤小结、主要截图、核心代码实现:比例:50%#include stdafx.h#include #include #define PI 3.14159float theta=-90.0; /rotating angleint inner=10,outer=80; /toruss inner & outer radiusfloat s=outer+4*inner+50; float eyex=0,eyey=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;float angle=0; /for angle between view-line and z axisfloat r=s; /for distance between eye and atfloat step=r/10; /for forward and backword step;int k=0;void Display(void);void Reshape(int w, int h);void mytime(int value);void drawground();void drawsphere();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; / must/should match the number of strings in argvglutInit(&argc, argv); /初始化GLUT库;glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH); glutInitWindowSize(500, 500);glutInitWindowPosition(1024 / 2 - 250, 768 / 2 - 250);glutCreateWindow(Rotating 3D World); /创建窗口,标题为“Rotating 3D World”;glutReshapeFunc(Reshape);init();glutDisplayFunc(Display); /用于绘制当前窗口;glutKeyboardFunc(mykeyboard);glutTimerFunc(100,mytime,10);glutMainLoop(); /表示开始运行程序,用于程序的结尾;return 0;void init()glClearColor(1,1,1,1);glEnable(GL_DEPTH_TEST); glPixelStorei(GL_PACK_ALIGNMENT, 1);/glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);/define light position1GLfloat light_position1=-outer,outer,outer+4*inner+50,0.0;/GLfloat light_position1=0,0,0,0.0;GLfloat light_position2=+outer,-outer,outer+inner,0.0;/GLfloat light color1光的强度GLfloat light_ambient1=1.0,1.0,1.0,1.0;GLfloat light_diffuse1=1.0,1.0,1.0,1.0;GLfloat light_specular1=1.0,1.0,1.0,1.0;/GLfloat light color2GLfloat light_ambient2=0.8,0.8,0.8,1.0;/环境光GLfloat light_diffuse2=0.8,0.8,0.8,1.0;/漫反射光GLfloat light_specular2=0.8,0.8,0.8,1.0;/镜面反射光/ light model- global light全局光GLfloat lmodel_ambient=0.8,0.2,0.2,1.0;glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,GL_TRUE);/ set light source locationglLightfv(GL_LIGHT0,GL_POSITION,light_position1);glLightfv(GL_LIGHT1,GL_POSITION,light_position2);/ set light source color;glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient1);glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse1);glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular1);/ set light source color;glLightfv(GL_LIGHT1,GL_AMBIENT,light_ambient2);glLightfv(GL_LIGHT1,GL_DIFFUSE,light_diffuse2);glLightfv(GL_LIGHT1,GL_SPECULAR,light_specular2);/ set material let material fits colorglEnable(GL_COLOR_MATERIAL);glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);/make light source enable;glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);glEnable(GL_LIGHT1);/clear color/ glClearColor(0.0,0.0,0.0,0.0);/Color shade modeglShadeModel(GL_SMOOTH);/ glShadeModel(GL_FLAT); /Material parameter settingGLfloat mat_specular1=1.0,1.0,1.0,1.0;GLfloat mat_shininess1=80.0;glMaterialfv(GL_FRONT,GL_SPECULAR,mat_specular1);glMaterialfv(GL_FRONT,GL_SHININESS,mat_shininess1);void mykeyboard(unsigned char key, int x, int y)switch(key) case W:case w:/ 向前直走/your code Hereeyex=eyex-step*sin(angle*PI/180.0);eyez=eyez-step*cos(angle*PI/180.0);atx=atx-step*sin(angle*PI/180.0);atz=atz-step*cos(angle*PI/180.0);break;case S:case s:/向后退/your code Hereeyex=eyex+step*sin(angle*PI/180.0);eyez=eyez+step*cos(angle*PI/180.0);atx=atx+step*sin(angle*PI/180.0);atz=atz+step*cos(angle*PI/180.0);break;case A:case a:/左看/your code Hereangle=angle+1;atx=eyex-r*sin(angle*PI/180.0);atz=eyez-r*cos(angle*PI/180.0);break;case D:case d:/右看/your code Hereangle=angle-1;atx=eyex-r*sin(angle*PI/180.0);atz=eyez-r*cos(angle*PI/180.0);break; glutPostRedisplay();/参数修改后调用重画函数,屏幕图形将发生改变void Display(void) glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(eyex,eyey,eyez,atx,aty,atz,0,1,0);glPushMatrix();glColor3f(1.0,1.0,1.0);drawwall();glColor3f(1.0,1.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);glutSolidTorus(inner,outer,30,50); glPopMatrix();glPushMatrix(); glTranslatef(outer,0,0);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);glutSolidSphere(inner,20,20);glPopMatrix();glPopMatrix();glPopMatrix();void drawground()/groundfor (int i=-outer-4*inner;iouter+4*inner;i+=2*inner) k+;if (k%2=0)glColor3f(0.5,1.0,0);elseglColor3f(1.0,1.0,1);for (int j=-outer-4*inner;jouter+4*inner;j+=2*inner) k+;if (k%2=0)glColor3f(0.5,1.0,0);elseglColor3f(1.0,1.0,1);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)k+;if (k%2=0)glColor3f(0.5,1.0,0);elseglColor3f(1.0,1.0,1);for (int j=-outer-4*inner;jouter+4*inner;j+=2*inner) k+;if (k%2=0)glColor3f(0.5,1.0,0);elseglColor3f(1.0,1.0,1);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;iouter+4*inner;i+=2*inner) k+;if (k%2=0)glColor3f(0.5,1.0,0);elseglColor3f(1.0,1.0,1); for (j=-outer-4*inner;jouter+4*inner;j+=2*inner) k+;if (k%2=0)glColor3f(0.5,1.0,0);elseglColor3f(1.0,1.0,1);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*inner;i+=2*inner) /for zk+;if (k%2=0)glColor3f(0.5,1.0,0);elseglColor3f(1.0,1.0,1); for (j=-outer-4*inner;j=outer+4*inner-2*inner;j+=2*inner) /for y k+;if (k%2=0)glCol
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化肥厂电路改造制度
- 教育培训机构收费标准合同协议
- 3.1铁及其化合物-利用覆铜板制作图案 教学设计 2024-2025学年高一上学期化学人教版(2019)必修第一册
- 高中地理 第3单元 第2节 城乡规划与土地利用说课稿 鲁教版选修4
- 八年级语文下册 团结互助 第十二课 姐弟情深 第七课时 阅读理解与科普阅读说课稿 新教版(汉语)
- 九年级语文下册 第五单元 任务一 阅读与思考说课稿 新人教版
- 奎文区安全执法培训班课件
- 2025年钻孔灌注桩施工标准合同范本
- 中医试题及答案
- 中医考试题集及答案
- 2025中远海运港口有限公司社会招聘2人笔试历年参考题库附带答案详解
- 2024年无锡工艺职业技术学院公开招聘辅导员笔试题含答案
- 2025年三峡银行考试真题及答案
- 2025年度哈尔滨市平房区纪委监委公开招聘雇员2人考试参考题库及答案解析
- 10KV变电送受电安全作业方案
- 2025年江西省高考化学试卷真题(含答案)
- 海上作业安全培训教学课件
- 2025年ARVR行业研究报告及未来行业发展趋势预测
- 【初中数学】单项式与单项式相乘(课件)+华东师大版(2024)数学八年级上册
- 情绪管理课2025年职场压力释放与心灵成长分析报告
- 交管12123驾驶证学法减分考试题库和答案
评论
0/150
提交评论