2023年3月23日 星期四

week06 蔣

 WEEK06

week06-1 TRT_robot2_teapot

先複製上周week05-2的程式貼上拿來改,display()改成茶壺


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

    glutSolidSphere(0.01,30,30);

    glPushMatrix();
        glTranslatef(0.5,0.5,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.45,0,0);
        glutSolidTeapot(0.3);
    glPopMatrix();

    glutSwapBuffers( );
    angle++;
}
int main(int argc, char *argv[ ])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week06");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop( );
}

week06-2 TRT_robot3_hierarchy

複製上個程式來修改


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

    glutSolidSphere(0.01,30,30);

    glPushMatrix();
        glTranslatef(0.25,0,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        myCube();
        glPushMatrix();
            glTranslatef(0.25,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.25,0,0);
            myCube();
        glPopMatrix();
    glPopMatrix();

    glutSwapBuffers( );
    angle++;
}
int main(int argc, char *argv[ ])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week06");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop( );
}

week06-3 TRT_robot4_arm_hand_right_left

複製上個程式修改成雙臂


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

    glutSolidSphere(0.01,30,30);

    glPushMatrix();///右邊的
        glTranslatef(0.25,0,0);///(3)決定掛在哪裡
        glRotatef(angle,0,0,1);///(2)
        glTranslatef(0.25,0,0);///(1)
        myCube();
        glPushMatrix();
            glTranslatef(0.25,0,0);///(3)決定掛在哪裡
            glRotatef(angle,0,0,1);///(2)
            glTranslatef(0.25,0,0);///(1)
            myCube();
        glPopMatrix();
    glPopMatrix();

    glPushMatrix();///左邊的
        glTranslatef(-0.25,0,0);///(3)決定掛在哪裡
        glRotatef(angle,0,0,1);///(2)
        glTranslatef(-0.25,0,0);///(1)
        myCube();
        glPushMatrix();
            glTranslatef(-0.25,0,0);///(3)決定掛在哪裡
            glRotatef(angle,0,0,1);///(2)
            glTranslatef(-0.25,0,0);///(1)
            myCube();
        glPopMatrix();
    glPopMatrix();

    glutSwapBuffers( );
    angle++;
}
int main(int argc, char *argv[ ])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week06");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop( );
}

week06-4  TRT_robot4_mouse_motion_angle

拿上個程式來用


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

    glutSolidSphere(0.01,30,30);

    glPushMatrix();///右邊的
        glTranslatef(0.25,0,0);///(3)決定掛在哪裡
        glRotatef(angle,0,0,1);///(2)
        glTranslatef(0.25,0,0);///(1)
        myCube();
        glPushMatrix();
            glTranslatef(0.25,0,0);///(3)決定掛在哪裡
            glRotatef(angle,0,0,1);///(2)
            glTranslatef(0.25,0,0);///(1)
            myCube();
        glPopMatrix();
    glPopMatrix();

    glPushMatrix();///左邊的
        glTranslatef(-0.25,0,0);///(3)決定掛在哪裡
        glRotatef(-angle,0,0,1);///(2)
        glTranslatef(-0.25,0,0);///(1)
        myCube();
        glPushMatrix();
            glTranslatef(-0.25,0,0);///(3)決定掛在哪裡
            glRotatef(-angle,0,0,1);///(2)
            glTranslatef(-0.25,0,0);///(1)
            myCube();
        glPopMatrix();
    glPopMatrix();
    glutSwapBuffers( );
    ///angle++; ///把這註解掉
}
void motion(int x,int y)
{///新加的mouse motion
    angle = x;
}
int main(int argc, char *argv[ ])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
    glutCreateWindow("Week06");

    glutMotionFunc(motion);///新加的mouse motion
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop( );
}






沒有留言:

張貼留言