2021年5月24日 星期一

好欸week06

第一節做會旋轉的長方形
程式碼:
#include <GL/glut.h> ///(0) 使用GLUT外掛 (忘了裝 GLUT)
int N=0, vx[3000], vy[3000];
float angle=0; ///TODO:
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空

    glPushMatrix();///TODO: 備份矩陣
        glRotatef(angle, 0, 0, 1);///TODO: 旋轉, 對Z軸轉
        glScalef(0.5,0.1,0.1);
        glColor3f(0.3,0.3,1.0);
        glutSolidCube(1);
    glPopMatrix(); ///TODO: 還原矩陣
    glutSwapBuffers();///交換兩倍的buffers
}
void motion( int x, int y )
{///TODO2: mouse motion 在拖動它
    angle++;///TODO:
    display();///TODO:
}
void keyboard( unsigned char key, int x, int y )
{
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv ); ///(1) GLUT初始設定
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
    glutCreateWindow("08160011我是神奇的小葉同學");///(3)開窗

    glutDisplayFunc(display);///(4)等一下要顯示的函式
    glutKeyboardFunc( keyboard );///TODO: 按按鍵, 它就會轉動!!!!
    glutMotionFunc( motion );///TODO2: mouse motion在動哦!!!!
    glutMainLoop();///(5)主要迴圈
}
會長這樣

第二節課
做一個會旋轉的正方形
程式碼:
#include <GL/glut.h> ///(0) 使用GLUT外掛 (忘了裝 GLUT)
float angle=0; ///TODO:
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空
    glPushMatrix();///TODO: 備份矩陣
        glRotatef(angle++, 0, 0, 1);///TODO: 旋轉, 對Z軸轉
        glutSolidCube(1);
    glPopMatrix(); ///TODO: 還原矩陣
    glutSwapBuffers();///交換兩倍的buffers
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv ); ///(1) GLUT初始設定
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
    glutCreateWindow("08160855 YEEEEE");///(3)開窗

    glutIdleFunc(display);
    glutDisplayFunc(display);///(4)等一下要顯示的函式
    glutMainLoop();///(5)主要迴圈
}
成品
內容有簡化

第三節開始要做機器人
手臂部分
程式碼:
#include <GL/glut.h> ///(0) 使用GLUT外掛 (忘了裝 GLUT)
float angle=0; ///TODO:
void hand()
{
    glPushMatrix();
        glScalef(0.5,0.1,0.1);
        glutSolidCube(1);
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空
    glPushMatrix();///TODO: 備份矩陣
        glTranslatef(-0.25,0,0);
        glRotatef(angle, 0, 0, 1);///TODO: 旋轉, 對Z軸轉
        glTranslatef(-0.25,0,0);
        hand();
        glPushMatrix();///TODO: 備份矩陣
            glTranslatef(-0.25,0,0);
            glRotatef(angle, 0, 0, 1);///TODO: 旋轉, 對Z軸轉
            glTranslatef(-0.25,0,0);
            hand();
        glPopMatrix(); ///TODO: 還原矩陣
    glPopMatrix();
    glutSwapBuffers();///交換兩倍的buffers
    angle++;
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv ); ///(1) GLUT初始設定
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
    glutCreateWindow("08160855 YEEEEE");///(3)開窗

    glutIdleFunc(display);
    glutDisplayFunc(display);///(4)等一下要顯示的函式
    glutMainLoop();///(5)主要迴圈
}
成品
這是一隻手

所以還要把另一隻手補上
#include <GL/glut.h> ///(0) 使用GLUT外掛 (忘了裝 GLUT)
float angle=0; ///TODO:
void hand()
{
    glPushMatrix();
        glScalef(0.5,0.1,0.1);
        glutSolidCube(1);
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清空
    glPushMatrix();///TODO: 備份矩陣
        glTranslatef(-0.25,0,0);
        glRotatef(angle, 0, 0, 1);///TODO: 旋轉, 對Z軸轉
        glTranslatef(-0.25,0,0);
        hand();
        glPushMatrix();///TODO: 備份矩陣
            glTranslatef(-0.25,0,0);
            glRotatef(angle, 0, 0, 1);///TODO: 旋轉, 對Z軸轉
            glTranslatef(-0.25,0,0);
            hand();
        glPopMatrix(); ///TODO: 還原矩陣
    glPopMatrix();
    glPushMatrix();///TODO: 備份矩陣
        glTranslatef(0.25,0,0);
        glRotatef(-angle, 0, 0, 1);///TODO: 旋轉, 對Z軸轉
        glTranslatef(0.25,0,0);
        hand();
        glPushMatrix();///TODO: 備份矩陣
            glTranslatef(0.25,0,0);
            glRotatef(-angle, 0, 0, 1);///TODO: 旋轉, 對Z軸轉
            glTranslatef(0.25,0,0);
            hand();
        glPopMatrix(); ///TODO: 還原矩陣
    glPopMatrix();
    glutSwapBuffers();///交換兩倍的buffers
    angle++;
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv ); ///(1) GLUT初始設定
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);///(2)顯示模式
    glutCreateWindow("08160855 YEEEEE");///(3)開窗

    glutIdleFunc(display);
    glutDisplayFunc(display);///(4)等一下要顯示的函式
    glutMainLoop();///(5)主要迴圈
}



沒有留言:

張貼留言

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

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