2020年4月21日 星期二

MEEEEEEEEEEE week08

期中考週啦

期中考的題目

glPushMartix();///備份矩陣
  glTranslatef(x,y,z);///移動
glRotatef(angle,x,y,z);///轉動
glScalef(x,y,z);///放大縮小
glBegin(GL_POLYGON);///開始畫
glColor3f(r,g,b);///顏色
glTexCoord2f(tx,ty);///貼圖座標
glNormal3f(nx,ny,nz);///打光的法向量
glVertex3f(x,y,z);///頂點
glEnd();///結束
glPopMatrix();///還原矩陣

(但我放上去的時候你已經考完了ㄏㄏ)

接下來打開glut project

可以試試看改改數字
形狀也會跟著變喔
(看看我胖胖的甜甜圈)
(Solid:實心 Wire:空心)

今天要做的是---轉轉機器手臂

程式碼啦

#include <Gl/glut.h>
void upper_arm()
{
    glPushMatrix();
        glScalef(1,0.3,0.3);
        glutSolidCube(0.5);
    glPopMatrix();
}
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();
        glRotatef(angle,0,0,1);
        upper_arm();
    glPopMatrix();
    angle++;
    glutSwapBuffers();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv)
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("week09");
    glutIdleFunc(display);
    glutDisplayFunc(display);
    glutMainLoop();
}
(期中考那些程式有用到餒 要好好背啊)

出來就長這樣 轉轉方塊

接下來把方塊的旋轉中心移到畫面中心

void display()

{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        upper_arm();
    glPopMatrix();
    angle++;
    glutSwapBuffers();
}


再來掛到右上角去

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();
        glTranslatef(0.5,0.5,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        upper_arm();
    glPopMatrix();
    angle++;
    glutSwapBuffers();
}

見證奇蹟的時刻

void arm()
{
    glPushMatrix();
        glScalef(1,0.3,0.3);
        glutSolidCube(0.5);
    glPopMatrix();
}
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();///右手
        glTranslatef(0.2,0,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        glColor3f(1,0,0);arm();///紅色的上手臂

        glPushMatrix();
            glTranslatef(0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.25,0,0);
            glColor3f(1,1,0); arm();///黃色的下手臂
        glPopMatrix();
    glPopMatrix();

    glPushMatrix();///左手
        glTranslatef(-0.2,0,0);
        glRotatef(angle,0,0,1);
        glTranslatef(-0.25,0,0);
        glColor3f(1,0,0);arm();///紅色的上手臂

        glPushMatrix();
            glTranslatef(-0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(-0.25,0,0);
            glColor3f(1,1,0);arm();///黃色的下手臂
        glPopMatrix();
    glPopMatrix();
    angle++;
    glutSwapBuffers();

}

做出來會變!!!!!

有左右手的手臂 搭拉

沒有留言:

張貼留言