- -实验课咯
#include <gl\glut.h>
#include <gl\GL.h>
#include <math.h>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
int PI=3.1415926 ;
int www=666, hhh=666;
GLfloat speed = 2 ,rx,ry,rz,dx=3,dy,dz;
//speed为位移速度,dx,dy,dz为视点位置变化量
void dis()//绘制图形
{
//added!!! below 3 lines
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(60.0, (GLfloat) www/(GLfloat) hhh, 1.0, 20.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode( GL_MODELVIEW );
glEnable(GL_DEPTH_TEST);
glLoadIdentity();
gluLookAt(dx,dy,dz, 0, 0, 0, 0, 1, 0);
//初始化视点在(3,0,0),目标(0,0,0),上方向为y轴正方向
glColor3f(0.0,1.0,0.4);
glutWireTeapot(1);//绘制茶壶在原点
glutSwapBuffers();
}
void keyboard (unsigned char key, int x, int y)//定义键盘操作
{
switch ( key )
{
//控制位移的键
case 'u': case 'U':
dx+=speed;
break;
case 'j': case 'J':
dx-=speed;
break;
case 'i': case 'I':
dy-=speed;
break;
case 'k': case 'K':
dy+=speed;
break;
case 'o': case 'O':
dz+=speed;
break;
case 'l': case 'L':
dz-=speed;
break;
}
glutPostRedisplay();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE);
glutInitWindowSize(www, hhh);
glutCreateWindow("teapot");
glutDisplayFunc(dis);
glutKeyboardFunc(keyboard);//键盘改变视点
glutMainLoop();
return 0;
}