实验三 观察三维物体

实验三 观察三维物体

ID:47491048

大小:593.00 KB

页数:26页

时间:2020-01-12

实验三 观察三维物体_第1页
实验三 观察三维物体_第2页
实验三 观察三维物体_第3页
实验三 观察三维物体_第4页
实验三 观察三维物体_第5页
资源描述:

《实验三 观察三维物体》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实验三观察三维物体姓名叶传军学号E11414103得分一.实验题目1.阅读arraycube.c,掌握彩色立方体的建模方法,为程序加注释。2.修改arraycube.c,实现交互式地移动照相机来观察已经建模好的彩色立方体。即用鼠标或键盘来改变gluLookAt(eyex,eyey,eyez,atx,aty,atz,upx,upy,upz)函数的9个参数,以此来观察立方体。要求:(1)交互时采用的鼠标和键盘按键自定。(2)分别在正投影和透视投影下实现题目中的功能。(3)可增加菜单功能,将正投影和透视投影下的观察功能融合到

2、一个程序中。可参考交互式教程Projection.c的功能。3.在arraycube.c的基础上编写一个交互式程序,实现立方体的旋转。具体要求如下:(1)立方体的旋转方式由鼠标和键盘按键来控制:按下鼠标左键,立方体绕x轴连续旋转;按下鼠标左键+ctrl键,立方体绕y轴连续旋转;按下鼠标右键,立方体绕z轴连续旋转。(注意:旋转的不动点在原点,正好是立方体的中心。)(2)如果旋转的不动点不在原点,而改为点P(1,1,1),如何实现立方体绕3个坐标轴轴的旋转?(3)如果要求每按下一次鼠标按键或键盘按键,立方体旋转的角度增加5

3、度,应如何修改程序?4.自学教材4.2.7节。编写一个交互式程序,使其可以通过鼠标(或键盘)和菜单实现一些glu和glut对象的旋转,平移和比例缩放。(加自己的创意)二.设计思想本次试验主要是用户交互与三维物体观察的结合,主要用到的函数有gluPerspective(fovy,aspect,near,far);glOrtho(left,right,bottom,top,near,far);gluLookAt(eyex,eyey,eyez,atx,aty,atz,upx,upy,upz);通过这些函数的调用可以分别在正投

4、影和透视投影下从不同的角度来观察三维物体。三.程序清单1.#include"stdafx.h"#include#includeGLdoublevertices[8][3]={-1.0,-1.0,1.0},?-1.0,1.0,1.0},{1.0,1.0,1.0},?1.0,-1.0,1.0},{-1.0,-1.0,-1.0},{-1.0,1.0,-1.0},{1.0,1.0,-1.0},{1.0,-1.0,-1.0}};GLdoublecolors[8][3]={{0.0,0.0

5、,0.0},{1.0,0.0,0.0},{1.0,1.0,0.0},{0.0,1.0,0.0},{0.0,0.0,1.0},{1.0,0.0,1.0},{1.0,1.0,1.0},{0.0,1.0,1.0}};//定义顶点和颜色的全局数组voidpolygon(inta,intb,intc,intd){//根据索引列表绘制多边形/*drawapolygonvialistofvertices*/glBegin(GL_QUADS);glColor3dv(colors[a]);glVertex3dv(vertices[a])

6、;glColor3dv(colors[b]);glVertex3dv(vertices[b]);glColor3dv(colors[c]);glVertex3dv(vertices[c]);glColor3dv(colors[d]);glVertex3dv(vertices[d]);glEnd();}voidcolorcube(){/*mapverticestofaces*///利用表面绘制立方体polygon(0,3,2,1);polygon(2,3,7,6);polygon(0,4,7,3);polygon(1,2

7、,6,5);polygon(4,5,6,7);polygon(0,1,5,4);}voiddisplay(){/*displaycallback,clearframebufferandzbuffer,/anddraw,swapbuffers*///显示回调函数glClear(GL_COLOR_BUFFER_BIT

8、GL_DEPTH_BUFFER_BIT);glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(1.0,1.0,1.0,0.0,0.0,0.0,0.0,1

9、.0,0.0);colorcube();glutSwapBuffers();}voidmyReshape(intw,inth){//设置投影方式glViewport(0,0,w,h);glMatrixMode(GL_PROJECTION);glLoadIdentity();if(w<=h)glOrtho(-2.0,2.0,-2.0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。