计算机图形学实验 - 透视茶壶源代码
更新时间:2024-05-04 02:25:01 阅读量: 综合文库 文档下载
- 计算机图形学实验报告推荐度:
- 相关推荐
#include
float fTranslate; float fRotate;
float fScale=1.0f;//set inital scale value to 1.0f
bool bPersp=false; bool bAnim=false; bool bWire=false;
int wHeight=0; int wWidth=0;
//todo
//hint:some additional parameters may needed here when you operate the teapot
void Draw_Leg() {
glScalef(1,1,3);
glutSolidCube(1.0f); //glutWireCone(1.0f); }
//定义操作茶壶的操作参数 int tx=1; int ty=0; int tz=0;
int tangle=90;
//定义设置scale的参数 float sx=0.3f; float sy=0.3f; float sz=0.3f;
void Draw_Scene() {
glPushMatrix(); glTranslatef(0,0,5);
glRotatef(tangle,tx,ty,tz); // glutSolidTeapot(1);
glutSolidSphere(1.0f,10,10);
glPopMatrix();
glPushMatrix();
glTranslatef(0,0,3.5); glScalef(5,4,1); glutSolidCube(1.0); glPopMatrix(); //leg1
glPushMatrix();
glTranslatef(1.5,1,1.5); Draw_Leg(); glPopMatrix(); //leg2
glPushMatrix();
glTranslatef(-1.5,1,1.5); Draw_Leg(); glPopMatrix(); //leg3
glPushMatrix();
glTranslatef(1.5,-1,1.5); Draw_Leg(); glPopMatrix(); //leg4
glPushMatrix();
glTranslatef(-1.5,-1,1.5); Draw_Leg(); glPopMatrix(); }
void updateView(int width,int height) {
glViewport(0,0,width,height);//reset the current viewport
glMatrixMode(GL_PROJECTION);//select the projection matrix glLoadIdentity();//reset the projection matrix float whRatio=(GLfloat)width/(GLfloat)height; if(bPersp) {
//todo when 'p'operation ,hint:use function glupersPective } else
glOrtho(-3,3,-3,3,-100,100);
glMatrixMode(GL_MODELVIEW);//select the modelview matrix
}
void reshape(int width,int height) {
if(height==0)//prevent a divide by zero by {
height=1; }
wHeight=height; wWidth=width;
updateView(wHeight,wWidth); }
void idle() {
glutPostRedisplay(); }
float eye[]={0,0,8}; float center[]={0,0,0};
//todo:hint:you may need another array when you operate the teapot void key(unsigned char k,int x,int y) {
switch(k) {
case 27:
case 'q':{exit(0);break;}
case 'p':{bPersp=!bPersp;updateView(wHeight,wWidth);break;} case ' ':{bAnim=!bAnim;break;} case 'o':{bWire=!bWire;break;}
case 'a':{center[0]=center[0]+1;break;}//todo ,hint:eye[]and center[]are the keys to solve the problems
case 'd':{center[0]=center[0]-1;break;} case 'w':{center[2]=center[2]+1;break;} case 's':{center[2]=center[2]-1;break;} case 'z':{center[1]=center[1]+1;break;} case 'c':{center[1]=center[1]-1;break;}
case 'r':{center[0]=0;center[1]=0;center[2]=0;};//恢复原状 //茶壶相关操作 case 'j':{tx++;break;} case 'l':{tx--;break;}
case 'i':{ty++;break;} case 'k':{ty--;break;} case 'n':{tz++;break;} case 'm':{tz--;ty--;break;}
case 'g':{sx=sy=sz=sx+0.05;break;}//放大 case 'f':{sx=sy=sz=sx-0.05;break;}//缩小
} }
void redraw() {
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glLoadIdentity();
gluLookAt(eye[0],eye[1],eye[2],center[0],center[1],center[2],0,1,0);//场景(0,0,0)扥视点中心(0,5,50)Y轴向上 if(bWire) {
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
} else {
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); }
glEnable(GL_DEPTH_TEST); glEnable(GL_LIGHTING);
GLfloat white[]={1.0,1.0,1.0,1.0}; GLfloat light_pos[]={5,5,5,1};
glLightfv(GL_LIGHT0,GL_POSITION,light_pos); glLightfv(GL_LIGHT0,GL_AMBIENT,white); glEnable(GL_LIGHT0);
glRotatef(fRotate,0,0,1.0f);//ratate around y axis glRotatef(-90,1,0,0); glScalef(sx,sy,sz); Draw_Scene();
if(bAnim)
fRotate+=0.3f;
//todo hint:when you want to rotate the teepot you may like to add another line here =
glutSwapBuffers(); }
int main(int argc,char*argv[]) {
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA|GLUT_DEPTH|GLUT_DOUBLE); glutInitWindowSize(480,480);
int windowHandle=glutCreateWindow(\
glutDisplayFunc(redraw); glutReshapeFunc(reshape); glutKeyboardFunc(key); glutIdleFunc(idle); glutMainLoop(); return 0; }
正在阅读:
计算机图形学实验 - 透视茶壶源代码05-04
六年级数学下册百分数应用题练习二02-01
关于举办第五个五年管理周期2015年度乌鲁木齐地区中小学(幼)教04-05
绿色建筑Studio设计任务书06-05
灭蚊剂项目可行性研究报告方案(可用于发改委立项及银行贷款+201304-04
2_机组检修维护方案07-24
雅思写作必背200句06-21
幼儿园食品安全培训计划一06-04
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 茶壶
- 源代码
- 透视
- 图形
- 实验
- 计算机
- usp36 467溶剂残留
- 《C语言程序设计》课后习题答案(第四版)
- 2018国家公务员考试行测备考资料:语句排序题详解
- 党员干部纪律作风教育整顿个人剖析材料
- 2018年江苏省十三市中考数学试卷压轴题及详细答案解析
- 政工类代发表期刊杂志 政工高级政工职称论文评定要求
- 博物馆名词解释
- 土木工程合同管理 试题汇编
- 文献检索作业
- 劳动经济学_试题及答案汇总
- 浙江省GDP与GNP的关系
- 2016届北京丰台区高三二模理综试题
- 化学初三九年级复习教案知识点总汇 - 图文
- 知识扶贫比经济扶贫更重要 一辩稿
- 明仁街道办事处防震预案
- 2013版用于立项介入导管项目可行性研究报告(甲级资质)审查要求
- 东北大学机械设计复习题库
- 幼儿园领导班子队伍建设计划
- 西安石油大学全日制专业学位研究生培养方案(2011年3月14日修改
- 浅析《易经》中的企业产品营销思想