已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
苏州大学文正学院计算机图形学实验报告实验名称 马的设计 姓名 _许志杰_ 学号 _ 专业班级 _信计_实验日期 _2011_年_12_月_16_日 上课教师 _王平_实验成绩 _一、 实验的目的掌握VC+程序开发环境下,控制台框架下OpenGL基本程序结构;编程实现平面图形的平移、旋转和放缩变换。二、 实验的内容与步骤(可提供屏幕抓图)a. VC+ 6.0控制台程序框架下的OpenGL绘图环境的设置b. VC+ 6.0控制台对于实现马的程序的运行的操作c. 调用实验一中自己中文姓名,从而获取字符的坐标信息,利用这些坐标基于OpenGL中的线段或者多边形绘制自己的姓名于马的下方,并设计上学号。程序设计程序修改程序调试三、 实验结果与分析(可提供屏幕抓图)中文名字的调用上有待提高,试了很多次还是只能放在左脚下,对于马的运行上面的调用还是要细心。其他结果正常,无明显偏差。四、 实验的使用说明和测试的数据无五、 实验中的问题总结与心得体会1、中文名字的调用还不是很熟悉,对于名字位置的导入对于我来说还是有点难度的,还没能掌握;2、在学号的设计上,显得有点繁琐,虽然最后是出来了,但是可以看出写了很多的程序,显得十分累赘;3、调试测试方面有待提高,对于错误的把握方面不能做到一看就知道。六、 源代码清单:#include stdafx.h#include #include #include #include #include #include point.h#include trans.h#define PI 3.14159#define D 4float alpha=0;using namespace std;vector vertices;vectorvector triangles;vector _trans;int v_num,tri_num;void unify_data(void);void read_data(const string &filename);void myinit(void);void normal_key(unsigned char key, int x, int y);void special_key(int key, int x, int y);void reshape(int w, int h);void transformation();void read_data(const string &filename)ifstream fp;fp.open(filename.c_str();POINT tmp;int i0,i1,i2;vector ind;vertices.clear();triangles.clear();int i;fpv_numtri_num;for(i=0;itmp.xtmp.ytmp.z;vertices.push_back(tmp);unify_data();/couttri_numendl;for(i=0;ii0i1i2;ind.push_back(i0); ind.push_back(i1); ind.push_back(i2);triangles.push_back(ind);ind.clear();fp.close();coutreadyendl;void unify_data(void)double minx,maxx,miny,maxy,minz,maxz;minx=maxx=vertices0.x;miny=maxy=vertices0.y;minz=maxz=vertices0.z;int i;for(i=1;iverticesi.x) minx=verticesi.x;if(maxxverticesi.y) miny=verticesi.y;if(maxyverticesi.z) minz=verticesi.z;if(maxzverticesi.z) maxz=verticesi.z;double midx=0.5*(minx+maxx), midy=0.5*(miny+maxy), midz=0.5*(minz+maxz);for(i=0;iv_num;i+) verticesi.x-=midx;verticesi.y-=midy;verticesi.z-=midz;double widx=maxx-minx, widy=maxy-miny, widz=maxz-minz;if(widzwidy) widz=widy;if(widzwidx) widz=widx;for(i=0;iv_num;i+) verticesi/=widz;void myinit(void) glClearColor(1.0, 1.0, 1.0, 1.0); /* white background */ glColor3f(1.0, 0.0, 0.0); /* draw in red */ glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(-1, 1.0, -1.0, 1, -10, 10); glMatrixMode(GL_MODELVIEW); GLfloat diffuseMaterial4 = 0.5, 0.5, 0.5, 1.0 ; GLfloat mat_specular = 1.0, 1.0, 1.0, 1.0 ; GLfloat light0_position = 1.0, 1.0, -1.0, 0.0 ; GLfloat light0_ambient = 0.5,0.5,0.5,1.0; /The following codes will be clear after we learn lighting glShadeModel(GL_SMOOTH); glEnable(GL_DEPTH_TEST); glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuseMaterial); glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); glMaterialf(GL_FRONT, GL_SHININESS, 25.0); glLightfv(GL_LIGHT0, GL_POSITION, light0_position); glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); glEnable(GL_COLOR_MATERIAL); /Read data string filename(horse.tri); read_data(filename);void draw(void)int i;POINT tmp;glBegin(GL_TRIANGLES);for(i=0;itri_num;i+)tmp = verticestrianglesi0;glVertex3d(tmp.x,tmp.y,tmp.z);tmp = verticestrianglesi1;glVertex3d(tmp.x,tmp.y,tmp.z);tmp = verticestrianglesi2;glVertex3d(tmp.x,tmp.y,tmp.z);glEnd();void xuehao()glMatrixMode(GL_MODELVIEW);glLoadIdentity();glScaled(1,1,1);glBegin(GL_LINE_LOOP);glColor3f(1.0,0.5,1.0);glVertex2f(0.01,-0.9);glVertex2f(0.01,-0.8);glVertex2f(0.05,-0.8);glVertex2f(0.05,-0.9);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.11,-0.85);glVertex2f(0.07,-0.85);glVertex2f(0.07,-0.8);glVertex2f(0.11,-0.8);glVertex2f(0.11,-0.9);glVertex2f(0.07,-0.9);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.17,-0.9);glVertex2f(0.17,-0.8);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.19,-0.82);glVertex2f(0.19,-0.8);glVertex2f(0.23,-0.8);glVertex2f(0.23,-0.9);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.25,-0.8);glVertex2f(0.25,-0.85);glVertex2f(0.29,-0.85);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.29,-0.8);glVertex2f(0.29,-0.9);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.35,-0.8);glVertex2f(0.35,-0.9);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.37,-0.82);glVertex2f(0.37,-0.8);glVertex2f(0.41,-0.8);glVertex2f(0.41,-0.9);glEnd();glBegin(GL_LINE_LOOP);glColor3f(1.0,0.5,1.0);glVertex2f(0.43,-0.9);glVertex2f(0.43,-0.8);glVertex2f(0.47,-0.8);glVertex2f(0.47,-0.9);glEnd();glBegin(GL_LINE_LOOP);glColor3f(1.0,0.5,1.0);glVertex2f(0.49,-0.9);glVertex2f(0.49,-0.8);glVertex2f(0.53,-0.8);glVertex2f(0.53,-0.9);glEnd();glBegin(GL_LINE_STRIP);glColor3f(1.0,0.5,1.0);glVertex2f(0.59,-0.8);glVertex2f(0.59,-0.9);glEnd();/glFlush();void xingming()glMatrixMode(GL_MODELVIEW);glLoadIdentity();glScaled(0.0005,0.0005,0.0005);glTranslatef(100.5,-1500.12,100.12); glColor3f(1.0,0.0,1.0); glBegin(GL_POLYGON);/点 glVertex2i (10, 100); glVertex2i (20, 100);glVertex2i (10, 120);glVertex2i (15, 100);glVertex2i (20, 100); glVertex2i (10, 20);glVertex2i (10, 20);glVertex2i (18, 30);glVertex2i (25, 100);glVertex2i (41, 100);glVertex2i (30, 120);glVertex2i (24, 90);glVertex2i (25, 60);glVertex2i (41, 60);glVertex2i (33, 100);glVertex2i (33, 20);glVertex2i (45, 100);glVertex2i (61, 100);glVertex2i (53, 120);glVertex2i (53, 60);glVertex2i (49, 60);glVertex2i (57, 60);glVertex2i (45, 40);glVertex2i (43, 20);glVertex2i (47, 40);glVertex2i (47, 20);glVertex2i (47, 20);glVertex2i (59, 20);glVertex2i (59, 20);glVertex2i (59, 40);glVertex2i (49, 40);glVertex2i (57, 30);glVertex2i (60, 40);glVertex2i (62, 20);glVertex2i (67, 100);glVertex2i (87, 100);glVertex2i (77, 120);glVertex2i (77, 50);glVertex2i (77, 100);glVertex2i (68, 50);glVertex2i (77, 100);glVertex2i (86, 50);glVertex2i (65, 20);glVertex2i (69, 40);glVertex2i (72, 40);glVertex2i (76, 20);glVertex2i (79, 40);glVertex2i (83, 20);glVertex2i (85, 40);glVertex2i (89, 20); glFlush();/* Handle window resize */void reshape(int w, int h) GLsizei wh=w;if(h=0;i-)switch(_transi)case TRANXP:px+=_delpos;break;case TRANXM:px-=_delpos;break;case TRANYP:py+=_delpos;break;case TRANYM:py-=_delpos;break;case TRANZP:pz+=_delpos;break;case TRANZM:pz-=_delpos;break;default:break;glRotated(45,px,py,pz);glTranslatef(px,py,pz);/光照void init()GLfloat lightposition = 0.0, 0.0, 3.0, 1.0 ;glClearColor(1.0,1.0,1.0,0.0);glShadeModel(GL_SMOOTH);glEnable(GL_DEPTH_TEST);glEnable(GL_LIGHTING);glEnable(GL_LIGHT0);GLfloat lightambient = 1.0,1.0,1.0,1.0;/环境光GLfloat lightdiffuse = 1.0,1.0,1.0,1.0;/漫反射GLfloat lightspecular = 1.0,1.0,1.0,1.0 ;/镜面反射光glLightfv(GL_LIGHT0,GL_AMBIENT,lightambient);glLightfv(GL_LIGHT0,GL_DIFFUSE,lightdiffuse);glLightfv(GL_LIGHT0,GL_SPECULAR,lightspecular);glLightModelf(GL_LIGHT_MODEL_AMBIENT, (0.0, 0.0, 0.0);GLfloat emission = 0.0, 0.0, 0.0, 1.0;/发射光GLfloat ambient =0.2,0.2,0.2,0.0;/环境光GLfloat diffuse =1.0,0.5,0.5,0.5;/漫反射特性GLfloat specular =0.5,0.5,0.5,0.0 ;/镜面反射光色GLfloat shininess =100.0; /镜面反射的光亮度glMaterialfv(GL_FRONT,GL_AMBIENT,ambient);glMaterialfv(GL_FRONT,GL_DIFFUSE,diffuse);glMaterialfv(GL_FRONT,GL_SPECULAR,specular);glMaterialfv(GL_FRONT,GL_SHININESS,shininess);glMaterialfv(GL_FRO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年必考版护士常见笔试题含答案
- 2025年必考版-N0-N1级护士理论考试题和答案
- 2025-2030中国墙面装饰材料市场消费趋势调研及绿色建材标准与投资机会评估
- 2025福建福州市动物园管理处招聘编外人员招聘2人笔试考试备考题库及答案解析
- 2025北京首都儿科研究所、首都医科大学附属首都儿童医学中心面向应届毕业生(含社会人员) 招聘96人考试笔试参考题库附答案解析
- 2025至2030新能源技术装备行业项目调研及市场前景预测评估报告
- 2025至2030全球及中国摩托车铝合金轮毂行业项目调研及市场前景预测评估报告
- 快递行业包装规范及客户满意度提升
- 2025年认识时钟考试题及答案
- 2025年安全员之C证(专职安全员)考试题库含答案(完整版)
- 2025班组三级安全安全教育考试题(含答案)
- 医疗机构基本标准
- 人教版 一年级上册数学《20以内的进位加法》(省级作业设计大赛作品)
- 高速收费站消防培训课件
- 防饮食中毒安全知识培训课件
- 全媒体运营师模考试题(附答案)
- 2025届广东省深圳市高三下学期一模考试英语试题及答案
- 口腔贴面病例报告
- 2026年中考道德与法治一轮复习:主要知识要点分类复习提纲
- 2025专精特新小巨人打分表(密件)
- 社区获得性肺炎指南
评论
0/150
提交评论