2016年5月17日 星期二

Week 13 王薏婷

作業 1

Step 1.  建立專案,顯示方塊圖

程式碼 :

#include <GL/glut.h>
void display()
{
    glutWireCube (0.3);
    glutSwapBuffers ();
}
int main (int argc , char **argv)
{
    glutInit (&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow ("Robot");
    glutDisplayFunc(display);

    glutMainLoop();
}




作業 2

轉動

#include <GL/glut.h>
float rot1=0;
void display()
{
    glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix ();
        glutSolidTeapot(0.2)
        glRotatef (rot1,0,0,1);
        glTranslatef (0.6,0,0);
        glRotatef (rot1*3,0,0,1);
        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();
}


作業 3



Step 1.  機器人雛形

程式碼 :

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

        glPushMatrix ();
            glTranslatef (0,0.15,0);
            glutWireCube (0.1);
        glPopMatrix ();

          glPushMatrix ();   ///右手的模型
            glTranslatef (0.15,0,0);
            glutWireCube (0.1);
            glTranslatef (0.1,0,0);
            glutWireCube (0.1);
            glTranslatef (0.08,0,0);
            glutWireCube (0.05);
        glPopMatrix ();

        glPushMatrix ();   ///左手的模型
            glTranslatef (-0.15,0,0);
            glutWireCube (0.1);
            glTranslatef (-0.1,0,0);
            glutWireCube (0.1);
            glTranslatef (-0.08,0,0);
            glutWireCube (0.05);
        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();
}


Step  2 .  加旋轉

程式碼 :

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

        glPushMatrix ();
            glTranslatef (0,0.15,0);
            glutWireCube (0.1);
        glPopMatrix ();

          glPushMatrix ();   ///右手的模型
            ///glTranslatef (0.15,0,0);
            glTranslatef (0.1,0.05,0);  /// 0.1+
            glRotatef (rot1,0,0,1);
            glTranslatef (0.05,0,0); /// 0.05+ _ 共 0.15
            glutWireCube (0.1);
            ///glTranslatef (0.1,0,0);
            glTranslatef (0.05,0,0);  /// 0.05+
            glRotatef (rot1,0,0,1);
            glTranslatef (0.05,0,0); /// 0.05+ _ 共 0.1
            glutWireCube (0.1);
            ///glTranslatef (0.08,0,0);
            glTranslatef (0.05,0,0);  /// 0.05+
            glRotatef (rot1,0,0,1);
            glTranslatef (0.05,0,0); /// 0.05+ _ 共 0.1
            glutWireCube (0.05);
        glPopMatrix ();

        glPushMatrix ();   ///左手的模型
            ///glTranslatef (-0.15,0,0);
            glTranslatef (-0.1,0.05,0);  /// -0.1+
            glRotatef (rot1,0,0,1);
            glTranslatef (-0.05,0,0); /// -0.05+ _ 共 -0.15
            glutWireCube (0.1);
            ///glTranslatef (-0.1,0,0);
            glTranslatef (-0.05,0,0);  /// -0.05+
            glRotatef (rot1,0,0,1);
            glTranslatef (-0.05,0,0); /// -0.05+ _ 共 -0.1
            glutWireCube (0.1);
            ///glTranslatef (-0.08,0,0);
            glTranslatef (-0.05,0,0);  /// -0.05+
            glRotatef (rot1,0,0,1);
            glTranslatef (-0.05,0,0); /// -0.05+ _ 共 -0.1
            glutWireCube (0.05);
        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();
}









沒有留言:

張貼留言