2014年5月30日 星期五

讓物體自己轉動

(3)讓物體自己轉動,不用一直按按鍵了!
#include <GL/glut.h>
float a = 0; //內插法比重 

// 利用陣列, 存許多角度
float angle[20] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};  
float angleOld[20] = {0,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 
float angleNew[20] = {90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 
void display()
{
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     glPushMatrix();
      glRotatef(angle[0], 0,0,1);
      glutSolidTeapot(0.3);
     glPopMatrix();
     glPushMatrix();
      glTranslatef(0.5, 0,0);
glRotatef(angle[1], 0,0,1);
glutSolidTeapot(0.3);
     glPopMatrix();
     glutSwapBuffers();
}
void readNext()
{
a += 0.1; //比重一直增加,角度才會變化 
for( int i=0; i<=20; i++){ //用for可以一次打20個
angle[i] = angleOld[i] * (1-a) + angleNew[i] * a;
}
}
void timer(int t)
{
glutTimerFunc(100, timer, 0);
readNext();
glutPostRedisplay();

void keyboard(unsigned char key, int x, int y)
{
if (key == 'r'){
readNext();
}
else if (key== 'p'){
glutTimerFunc(0, timer, 0);
}
glutPostRedisplay();
}
int main()
{
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week15");
glutKeyboardFunc(keyboard);
glutDisplayFunc(display);
glutMainLoop();
}

沒有留言:

張貼留言