2016年5月16日 星期一

Week13_許皓翔 - 河蟹牌Part 10

課堂作業一 : 兩個茶壺 ~ ~ (機器人Robot)



新增專案 - 貝殼空專案 - c++ - 路徑設桌面 - 右鍵build設freeglut include & freeglut lib &五咒語

記得要把freeglut.dll放進程式資料夾裡歐(不能拿x64裡面的) ~ ~ ~

帥氣程式碼 >"<

#include <GL/glut.h>
void display()
{
    glPushMatrix();
        glutSolidTeapot(0.3); //茶壺1號機
        glTranslatef(0.5, 0, 0);
        glutSolidTeapot(0.3); //茶壺2號機
    glPopMatrix();
    glutSwapBuffers();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Robot");
    glutDisplayFunc(display);
    glutMainLoop();
}


成品 : 




課堂作業二 : 旋轉茶壺


改良版一 : 自轉

程式碼 - 

#include <GL/glut.h>
float rot1=0;
void display()
{
    glPushMatrix();
        glutSolidTeapot(0.3);
        glTranslatef(0.5, 0, 0);
        glRotatef(rot, 0,0,1);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void motion(int x, int y)
{
    rot1=x;
    glutPostRedisplay();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Robot");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}






成品 : 




改良版二 : 公轉


程式碼 - 改良版一再加兩行


#include <GL/glut.h>
float rot1=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glutSolidTeapot(0.3);
        glRotatef(rot1, 0,0,1);
        glTranslatef(0.5, 0, 0);
        glRotatef(rot1, 0,0,1);
        glutSolidTeapot(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
void motion(int x, int y)
{
    rot1=x; //旋轉量
    glutPostRedisplay();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Robot");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}


成品 : 








課堂作業三 : 手臂


程式碼 -


#include <GL/glut.h>
float rot1=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();

        glutSolidTeapot(0.2);

        glTranslatef(0.33, 0.05, 0);///step 3: let below 1-2 to be in (0.5, 0.5);
        glRotatef(rot1, 0,0,1);///step 1: prepare rotate
        glTranslatef(0.25, 0, 0);///step 2: let the teapot handle be ratating center
        glutSolidTeapot(0.2);

        glTranslatef(0.33, 0.05, 0);///step 3: let below 1-2 to be in (0.5, 0.5);
        glRotatef(rot1, 0,0,1);///step 1: prepare rotate
        glTranslatef(0.25, 0, 0);///step 2: let the teapot handle be ratating center
        glutSolidTeapot(0.2);

    glPopMatrix();
    glutSwapBuffers();
}
void motion(int x, int y)
{
    rot1=x;
    glutPostRedisplay();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Robot");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}


成品 :







課堂作業四 : 我來組成頭部  機器人 ~ ~


程式碼 -

#include <GL/glut.h>
float rot1=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();

    glPushMatrix();
        glutWireCube(0.3);///body
        glPushMatrix();
          glTranslatef(0, 0.2, 0);
          glutWireCube(0.1);///head
        glPopMatrix();

        glPushMatrix();
          glTranslatef(0.2, 0.1, 0);
          glutWireCube(0.1);///upper arm
          glTranslatef(0.1, 0, 0);
          glutWireCube(0.1);///lower arm
          glTranslatef(0.1, 0, 0);
          glutWireCube(0.1);///right hand
        glPopMatrix();

        glPushMatrix();
          glTranslatef(-0.2, 0.1, 0);
          glutWireCube(0.1);///upper arm
          glTranslatef(-0.1, 0, 0);
          glutWireCube(0.1);///lower arm
          glTranslatef(-0.1, 0, 0);
          glutWireCube(0.1);///right hand
        glPopMatrix();



    glPopMatrix();
    glPopMatrix();
    glutSwapBuffers();
}
void motion(int x, int y)
{
    rot1=x;
    glutPostRedisplay();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Robot");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}

成品 :








改良版一 : 手臂動起乃 ~ ~ ~


程式碼 : 機器人程式再加幾行

#include <GL/glut.h>
float rot1=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();

    glPushMatrix();
        glutWireCube(0.3);///body
        glPushMatrix();
          glTranslatef(0, 0.2, 0);
          glutWireCube(0.1);///head
        glPopMatrix();

        glPushMatrix();
          glTranslatef(0.15, 0.1, 0);
          glRotatef(rot1,0,0,1);
          glTranslatef(0.05, 0, 0);
          glutWireCube(0.1);///upper arm

          glTranslatef(0.05, 0, 0);
          glRotatef(rot1,0,0,1);
          glTranslatef(0.05, 0, 0);
          glutWireCube(0.1);///lower arm


          glTranslatef(0.05, 0, 0);
          glRotatef(rot1,0,0,1);
          glTranslatef(0.05, 0, 0);
          glutWireCube(0.1);///right hand
        glPopMatrix();

        glPushMatrix();
          ///glTranslatef(-0.2, 0.1, 0);
          glTranslatef(-0.15, 0.1, 0);
          glRotatef(-rot1,0,0,1);
          glTranslatef(-0.05, 0, 0);
          glutWireCube(0.1);///upper arm

          ///glTranslatef(-0.1, 0, 0);
          glTranslatef(-0.05, 0, 0);
          glRotatef(-rot1,0,0,1);
          glTranslatef(-0.05, 0, 0);
          glutWireCube(0.1);///lower arm

          ///glTranslatef(-0.1, 0, 0);
          glTranslatef(-0.05, 0, 0);
          glRotatef(-rot1,0,0,1);
          glTranslatef(-0.05, 0, 0);
          glutWireCube(0.1);///right hand
        glPopMatrix();



    glPopMatrix();
    glPopMatrix();
    glutSwapBuffers();
}
void motion(int x, int y)
{
    rot1=x;
    glutPostRedisplay();
}
int main(int argc, char**argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Robot");
    glutDisplayFunc(display);
    glutMotionFunc(motion);
    glutMainLoop();
}


成品 : 無敵鐵金剛   手臂能彎曲了歐





沒有留言:

張貼留言