2016年5月16日 星期一

Week13-邱緯豪-課堂作業

1.機器人初模型

專案(左鍵) - Build Options 設定

(a)Search Directories 目錄
      1.Compiler Add  C:\freeglut\include
      2.Linker Add C:\freeglut\lib

(b)Linker Settings
      Add  1.winmm
              2.freeglut
              3.glu32
              4.gdi32
              5.opengl32

#include <GL/glut.h>
void display()
{
    glPushMatrix();
        glutSolidCube(0.7);

        glTranslatef(0.6,0,0);
        glutSolidCube(0.3);

        glTranslatef(-1.2,0,0);
        glutSolidCube(0.3);
    glPopMatrix();
    glutSwapBuffers();
}
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE);
    glutCreateWindow("03161042");
    glutDisplayFunc(display);

    glutMainLoop();
}


2.機器人手臂旋轉

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

        glTranslatef(0.15,0,0); //掛在哪
        glRotatef(rota, 0,0,1); //轉動
        glTranslatef(0.3,0,0); //轉動的中心
        glutSolidCube(0.3);

        glTranslatef(0.05,0,0); //掛在哪
        glRotatef(rota, 0,0,1); //轉動
        glTranslatef(0.3,0,0); //轉動的中心
        glutSolidCube(0.3);

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

    glutMainLoop();
}

3.繪出機器人使其跳舞

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

        glPushMatrix();
            glTranslatef(0,0.4,0);
            glutSolidCube(0.2); //head
        glPopMatrix();

        glPushMatrix();
            glTranslatef(0.225,0.2,0);
            glRotatef(rota,0,0,1);
            glTranslatef(0.1,0,0);
            glutSolidCube(0.1); //上臂
            glTranslatef(0.06,0,0);
            glRotatef(rota,0,0,1);
            glTranslatef(0.06,0,0);
            glutSolidCube(0.1); //下臂
            glTranslatef(0.06,0,0);
            glRotatef(rota,0,0,1);
            glTranslatef(0.06,0,0);
            glutSolidCube(0.1); //右手
        glPopMatrix();

        glPushMatrix();
            glTranslatef(-0.225,0.2,0);
            glRotatef(-rota,0,0,1);
            glTranslatef(-0.1,0,0);
            glutSolidCube(0.1); //上臂
            glTranslatef(-0.06,0,0);
            glRotatef(-rota,0,0,1);
            glTranslatef(-0.06,0,0);
            glutSolidCube(0.1); //下臂
            glTranslatef(-0.06,0,0);
            glRotatef(-rota,0,0,1);
            glTranslatef(-0.06,0,0);
            glutSolidCube(0.1); //右手
        glPopMatrix();

        glPushMatrix();
            glTranslatef(0.075,-0.3,0);
            glRotatef(-rota,0,0,1);
            glTranslatef(0.075,0,0);
            glutSolidCube(0.1); //大腿
            glTranslatef(0,-0.06,0);
            glRotatef(-rota,0,0,1);
            glTranslatef(0,-0.06,0);
            glutSolidCube(0.1); //小腿
            glTranslatef(0,-0.125,0);
            glutSolidCube(0.1); //右腳
            glTranslatef(0.1,0,0);
            glutSolidCube(0.1);
        glPopMatrix();

        glPushMatrix();
            glTranslatef(-0.15,-0.325,0);
            glutSolidCube(0.1); //大腿
            glTranslatef(0,-0.125,0);
            glutSolidCube(0.1); //小腿
            glTranslatef(0,-0.125,0);
            glutSolidCube(0.1); //左腳
            glTranslatef(-0.1,0,0);
            glutSolidCube(0.1);

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

    glutMainLoop();
}


沒有留言:

張貼留言