2021年5月24日 星期一

我不想出錢 Week14

主題: Timer 與 動畫

下載這個gundam.zip

















圓球
改背景


程式碼:
#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSolidSphere(0.3, 30, 30); ///實心的圓球
                ///半徑 縱切 橫片切 (柳丁切)
    glutSwapBuffers();
}
void timer(int t)
{
    glClearColor( 1,0,0,0);///清除背景的色彩: 紅色
}
int main(int argc, char** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("week14 timer");

    glutDisplayFunc(display);
    glutTimerFunc( 1000, timer, 0);
            ///要等多久 叫誰 參數
    glutMainLoop();
}

切面






程式碼:
#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutWireSphere(0.3, 30, 30); ///實心的圓球
                ///半徑 縱切 橫片切 (柳丁切)
    glutSwapBuffers();
}
void timer(int t)
{
    glClearColor( 1,0,0,0);///清除背景的色彩: 紅色
}
int main(int argc, char** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("week14 timer");

    glutDisplayFunc(display);
    glutTimerFunc( 1000, timer, 0);
            ///要等多久 叫誰 參數
    glutMainLoop();
}

改數字




















程式碼:
#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutWireSphere(0.3, 6, 30); ///實心的圓球
                ///半徑 縱切 橫片切 (柳丁切)
    glutSwapBuffers();
}
void timer(int t)
{
    glClearColor( 1,0,0,0);///清除背景的色彩: 紅色
}
int main(int argc, char** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("week14 timer");

    glutDisplayFunc(display);
    glutTimerFunc( 1000, timer, 0);
            ///要等多久 叫誰 參數
    glutMainLoop();
}





















程式碼:
#include <GL/glut.h>
int angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix(); ///step02-1
        glRotatef(angle, 0,0,1);///step02-1
        glutSolidCube(0.3);///glutWireSphere(0.3, 30, 30); ///實心的圓球
    glPopMatrix();///step02-1
    glutSwapBuffers();///柳丁
}
void timer(int t) ///step02-1 鬧鐘響了,timer叫了
{
    glutTimerFunc( 30, timer, t+1);///step02-1 馬上設定下一個鬧鐘,別睡太久
    angle++; ///step02-1 上個廁所
    display();///step02-1 喝個水
}///又睡著了
int main(int argc, char** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("week14 timer");
    glutDisplayFunc(display);
    glutTimerFunc( 4000, timer, 0);///睡前第一個鬧鐘
    glutMainLoop();
}








































程式碼:
#include <GL/glut.h>
int angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix(); ///step02-1
        glRotatef(angle, 0,0,1);///step02-1
        glutSolidCube(0.3);///glutWireSphere(0.3, 30, 30); ///實心的圓球
    glPopMatrix();///step02-1
    glutSwapBuffers();///柳丁
}
int diff=2;
void timer(int t) ///step02-1 鬧鐘響了,timer叫了
{
    glutTimerFunc( 20, timer, t+1);///step02-1 馬上設定下一個鬧鐘,別睡太久
    angle+= diff; ///step02-1 上個廁所
    if( angle>180 ) diff = -diff;
    if( angle<0 ) diff = -diff;
    display();///step02-1 喝個水
}///又睡著了
int main(int argc, char** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("week14 timer");
    glutDisplayFunc(display);
    glutTimerFunc( 4000, timer, 0);///睡前第一個鬧鐘
    glutMainLoop();
}





















程式碼:
#include <GL/glut.h>
int angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix(); ///step02-1
        glRotatef(angle, 0,0,1);///step02-1
        glutSolidCube(0.3);///glutWireSphere(0.3, 30, 30); ///實心的圓球
    glPopMatrix();///step02-1
    glutSwapBuffers();///柳丁
}
int diff=2;
void timer(int t) ///step02-1 鬧鐘響了,timer叫了
{
    glutTimerFunc( 20, timer, t+1);///step02-1 馬上設定下一個鬧鐘,別睡太久
    angle+= diff; ///step02-1 上個廁所
    if( angle>90 || angle<0 ) diff = -diff;
    display();///step02-1 喝個水
}///又睡著了
int main(int argc, char** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("week14 timer");
    glutDisplayFunc(display);
    glutTimerFunc( 0, timer, 0);///睡前第一個鬧鐘
    glutMainLoop();
}





















程式碼:
#include <GL/glut.h>
int angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glutSolidCube(0.3);///身體
        glPushMatrix();
            glRotatef(angle, 0,0,1);
            glutSolidCube(0.3);///左手
        glPopMatrix();

    glPopMatrix();
    glutSwapBuffers();///柳丁
}
int diff=2;
void timer(int t) ///step02-1 鬧鐘響了,timer叫了
{
    glutTimerFunc( 20, timer, t+1);///step02-1 馬上設定下一個鬧鐘,別睡太久
    angle+= diff; ///step02-1 上個廁所
    if( angle>90 || angle<0 ) diff = -diff;
    display();///step02-1 喝個水
}///又睡著了
int main(int argc, char** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("week14 timer");
    glutDisplayFunc(display);
    glutTimerFunc( 0, timer, 0);///睡前第一個鬧鐘
    glutMainLoop();
}





















程式碼:
#include <GL/glut.h>
int angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glColor3f(1,1,1); glutSolidCube(0.4);///身體白
        glPushMatrix();
        //    glRotatef(angle, 0,0,1);
            glColor3f(1,0,0); glutSolidCube(0.3);///左手紅
        glPopMatrix();

    glPopMatrix();
    glutSwapBuffers();///柳丁
}
int diff=2;
void timer(int t) ///step02-1 鬧鐘響了,timer叫了
{
    glutTimerFunc( 20, timer, t+1);///step02-1 馬上設定下一個鬧鐘,別睡太久
    angle+= diff; ///step02-1 上個廁所
    if( angle>90 || angle<0 ) diff = -diff;
    display();///step02-1 喝個水
}///又睡著了
int main(int argc, char** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("week14 timer");
    glutDisplayFunc(display);
    glutTimerFunc( 0, timer, 0);///睡前第一個鬧鐘
    glutMainLoop();
}





















程式碼:
#include <GL/glut.h>
int angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glColor3f(1,1,1); glutSolidCube(0.4);///身體白
        glPushMatrix();
        //    glRotatef(angle, 0,0,1);
            glTranslatef( -0.2, 0, 0);
            glColor3f(1,0,0); glutSolidCube(0.3);///左手紅
        glPopMatrix();

    glPopMatrix();
    glutSwapBuffers();///柳丁
}
int diff=2;
void timer(int t) ///step02-1 鬧鐘響了,timer叫了
{
    glutTimerFunc( 20, timer, t+1);///step02-1 馬上設定下一個鬧鐘,別睡太久
    angle+= diff; ///step02-1 上個廁所
    if( angle>90 || angle<0 ) diff = -diff;
    display();///step02-1 喝個水
}///又睡著了
int main(int argc, char** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("week14 timer");
    glutDisplayFunc(display);
    glutTimerFunc( 0, timer, 0);///睡前第一個鬧鐘
    glutMainLoop();
}












































程式碼:
#include <GL/glut.h>
int angle=0;
void drawArml()
{
    glPushMatrix();
        glScalef(1, 0.5, 0.5);
        glColor3f(1,0,0); glutSolidCube(0.3);///左手紅
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glColor3f(1,1,1); glutSolidCube(0.4);///身體白
        glPushMatrix();
            glTranslatef( -0.2, +0.2, 0);///(3)掛到右上角
            glRotatef(angle, 0,0,1);///(2)轉動
            glTranslatef( -0.15, 0, 0);///把旋轉中心的關節軸 放在正中心
            drawArml();
        glPopMatrix();

    glPopMatrix();
    glutSwapBuffers();///柳丁
}
int diff=2;
void timer(int t) ///step02-1 鬧鐘響了,timer叫了
{
    glutTimerFunc( 20, timer, t+1);///step02-1 馬上設定下一個鬧鐘,別睡太久
    angle+= diff; ///step02-1 上個廁所
    if( angle>90 || angle<0 ) diff = -diff;
    display();///step02-1 喝個水
}///又睡著了
int main(int argc, char** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("week14 timer");
    glutDisplayFunc(display);
    glutTimerFunc( 0, timer, 0);///睡前第一個鬧鐘
    glutMainLoop();
}

沒有留言:

張貼留言

Week18期末作業(橘貓的跳舞熊熊)

 期末作業(橘貓的跳舞熊熊) 影片: https://youtu.be/R89tptMaQZw 程式碼: #include <opencv/highgui.h> #include <opencv/cv.h> #include <GL/glut.h...