2014年5月30日 星期五

Week15, (1)利用內插法轉動

(1)利用內插法轉動
#include <GL/glut.h>
float a = 0; //內插法比重
float angle = 0; //用來轉動的角度,由angleOld, angleNew計算出
float angleOld = 0; //舊的角度,用來做內插法
float angleNew = 90; //新的角度,用來做內插法
void display()
{
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     glPushMatrix();
      glRotatef(angle, 0,0,1);
      glutSolidTeapot(0.3);
     glPopMatrix();
     glutSwapBuffers();
}
void keyboard(unsigned char key, int x, int y)
{
if (key == 'r'){
a += 0.1; //比重一直增加,角度才會變化
angle = angleOld * (1-a) + angleNew * a; //利用內插法算出角度
}
glutPostRedisplay();
}
int main()
{
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week15");

glutKeyboardFunc(keyboard);
glutDisplayFunc(display);
glutMainLoop();
}

沒有留言:

張貼留言