计算机图形学-OpenGL投影变换
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名称:OpenGL投影变换(实验四)
班级:信09-1
学号:2108190911211
姓名:王杰
【实验目的】
1、掌握GLUT中多面体和二次曲面的生成
2、掌握正交投影及透视投影变换
【实验内容】
1、源程序
#include
GLsizei winWidth = 500, winHeight = 500;
void init(void)
{
glClearColor(1.0,1.0,1.0,0.0);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,0.0);
glTranslatef(0.0,0.0,-5.0);
glRotatef(30,2,2,2);
glutWireOctahedron ( );//八面体
glFlush();
}
void winReshapeFcn(GLint newWidth,GLint newHeight) {
glViewport(0,0,newWidth,newHeight);
glMatrixMode(GL_PROJECTION);
//glFrustum(-2.0,2.0,-2.0,2.0,2.0,20.0);//透视投影
glOrtho(-2.0,2.0,-2.0,2.0,2.0,20.0);//正交投影
glMatrixMode(GL_MODELVIEW);
glClear(GL_COLOR_BUFFER_BIT);
}
void main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(100,100);
glutInitWindowSize(winWidth,winHeight);
//glutCreateWindow("投影变化—透视投影");
glutCreateWindow("投影变化—正交投影");
init();
glutDisplayFunc(display);
glutReshapeFunc(winReshapeFcn);
glutMainLoop();
}
2、运行结果截图(两幅)
3、正交及透视投影函数功能及使用说明
glFrustum(-2.0,2.0,-2.0,2.0,2.0,20.0);//透视投影glOrtho(-2.0,2.0,-2.0,2.0,2.0,20.0);//正交投影
glutCreateWindow("投影变化—透视投影");
glutCreateWindow("投影变化—正交投影");