2019年5月23日 星期四

馬馬JOE的奇幻冒險

電腦圖學 2019-05-23 Week14
1.主題:計時器Timer
2.主題:內插公式
3.主題:動畫
4.期末作品
5.打上以下的程式碼
#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSolidTeapot( 0.3 );

    glutSwapBuffers();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(500,500);///變大了
    glutCreateWindow("week 14 timer");

    glutDisplayFunc(display);
    glutMainLoop();
}
6.以下得程式碼可以使茶壺從左至右移動
#include <GL/glut.h>
#include <mmsystem.h>///Now (1)
float angle=0;
float nowX=0;///NOW2
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        ///glRotatef(angle, 0,0,1);
        glTranslatef(nowX, 0, 0);///NOW2
        glutSolidTeapot( 0.3 );
    glPopMatrix();
    glutSwapBuffers();
}
void timer(int t)///NOW timer!!!!
{
    /// 1000 ms = 1 sec,  30 ms = 1/33 sec , 33 fps
    glutTimerFunc(30, timer, t+1 );///NOW timer!!!! 起床要播下一個鬧鐘
    float alpha = (t%33) / 33.0;///NOW2 alpha 內插
    nowX = alpha* 1 + (1-alpha)* -1 ;///NOW2

    angle += 1;
    glutPostRedisplay();///系統重繪畫面
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowSize(500,500);///變大了
    glutCreateWindow("week 14 timer");

    glutDisplayFunc(display);
    glutTimerFunc(1000, timer, 0);///NOW timer!!!!

    glutMainLoop();
}
7.用Excel作內插公式
8.

沒有留言:

張貼留言