2020年4月21日 星期二

Note by Jack Week09

機器人!

    手手變出來惹

程式碼:
#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();
        glTranslatef(0.5,0.5,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        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();
}

    偷偷摳別人的程式碼(?)可以變出兩隻手手

程式碼:
#include <GL/glut.h>

void upper_arm(){
    glPushMatrix();///備份
        glScalef(1,0.3,0.3);///x不變,y,z變0.3
        glutSolidCube(0.5);
    glPopMatrix();///還原
}
float angle=0;///TODO
void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

///這邊要注意矩陣所包含的範圍!
    glPushMatrix();///右手 矩陣
        glColor3ub(25,90,201);
        ///對正中心做移動旋轉
        glTranslatef(0.35,0,0);///TODO3:把下面以手肘為中心 轉動的手掛在右上方
        glRotatef(angle,0,0,1);///對z軸旋轉 TODO
        glTranslatef(0.23,0,0);///TODO2:把想要旋轉的中心放到正中心
        upper_arm();///右手臂

            glPushMatrix();///備份矩陣
                glColor3ub(25,250,0);
                ///對手臂做移動旋轉
                glTranslatef(0.22,0,0);///TODO3:把下面以手肘為中心 轉動的手掛在右上方
                glRotatef(angle,0,0,1);///對z軸旋轉 TODO
                glTranslatef(0.23,0,0);///TODO2:把想要旋轉的中心放到正中心
                upper_arm();///右手肘
            glPopMatrix();///還原矩陣

    glPopMatrix();///還原矩陣

    glPushMatrix();///左手 備份矩陣
        glColor3ub(25,90,201);
        ///對正中心做移動旋轉
        glTranslatef(-0.35,0,0);///TODO3:把下面以手肘為中心 轉動的手掛在右上方
        glRotatef(-angle,0,0,1);///對z軸旋轉 TODO
        glTranslatef(-0.23,0,0);///TODO2:把想要旋轉的中心放到正中心
        upper_arm();///左手臂

            glPushMatrix();///備份矩陣
                glColor3ub(25,250,0);
                ///對手臂做移動旋轉
                glTranslatef(-0.22,0,0);///TODO3:把下面以手肘為中心 轉動的手掛在右上方
                glRotatef(-angle,0,0,1);///對z軸旋轉 TODO
                glTranslatef(-0.23,0,0);///TODO2:把想要旋轉的中心放到正中心
                upper_arm();///左手肘
            glPopMatrix();///還原矩陣

    glPopMatrix();///還原矩陣

    angle++;///TODO

    glutSwapBuffers();
}

int main(int argc, char *argv[]){

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("Week09");

    glutDisplayFunc(display);
    glutIdleFunc(display);///TODO


    glutMainLoop();
}

沒有留言:

張貼留言