2021年3月29日 星期一

橘貓(電圖小筆記_week06)

★keyboard,mouse 璇轉★

接續上週week05的程式碼,加入一些函式,讓他可以旋轉,再使用滑鼠或鍵盤控制

首先要先加入

float angle=0;//(角度)初始化

接下來讓我們看看控制函式

1.鍵盤控制

void keyboard(unsigned char key ,int x,int y){

    angle++;

    display();

}

2.滑鼠控制

void mouse(int button,int state,int x,int y)

{

    angle++;

    display();

}

在display函式中要加入

push跟pop函式

    glPushMatrix();

        glRotated(angle,0,0,1);//旋轉(角度,x,y,z)

        glScaled(0.5,0.1,0.1);//大小(x,y,z)

        glColor3f(0.3,0.3,1.0);//顏色(r,g,b)

        glutSolidCube(1);//實心正方形

    glPopMatrix();

 還要在main函式中呼叫

1.呼叫鍵盤函式

    glutKeyboardFunc(keyboard);

2.呼叫滑鼠函式

    glutMouseFunc(mouse);

程式碼:

★閒置時自動旋轉★



基本上就是使用display和main函式
在display中的push,pop新增
        glTranslated(-0.25,0,0);//位置
        glRotated(angle++,0,0,1);//顯示時旋轉
在main中增加Idle函式
    glutIdleFunc(display);//一直重複顯示

!製作手臂(1)!


首先先寫一個手臂(hand)函式
void hand()//用來畫手臂
{
    glPushMatrix();
        glScaled(0.5,0.1,0.1);
        glutSolidCube(1);
    glPopMatrix();
}
在display 中的glPushMatrix增加
    glPushMatrix();
        glTranslated(-0.25,0,0);//固定hand位置
        glRotated(angle++,0,0,1);//旋轉
        glTranslated(-0.25,0,0);//將璇轉軸固定
        hand();//使用手臂
    glPopMatrix();
    hand();//使用手臂

!雙旋轉手臂(2)!

大象鼻子~~
在display 中的glPushMatrix增加新的glPushMatrix畫更多手臂
    glPushMatrix();
        glTranslated(-0.25,0,0);//固定hand位置
        glRotated(angle,0,0,1);//旋轉
        glColor3f(0.2,0.3,1.0);
        glTranslated(-0.25,0,0);//將璇轉軸固定
        hand();
            glPushMatrix();
            glTranslated(-0.25,0,0);//固定hand位置
            glRotated(angle,0,0,1);//旋轉
            glColor3f(0.2,0.3,1.0);
            glTranslated(-0.25,0,0);//將璇轉軸固定
            hand();
        glPopMatrix();
    glPopMatrix();
    hand();
    glutSwapBuffers();
    angle++;
}

✋雙手一起轉✋

第一個版本

第二個版本

基本上就是更改display 中的glPushMatrix裡面的角度讓手臂的轉動方向改變

程式碼:



沒有留言:

張貼留言

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

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