2023年3月22日 星期三

Lisa的電腦圖學 - week06

  ➤ Week06-1_TRT_robot2

    1. 開啟CodeBlocks ,新增OpenGL專案,File ➝ New ➝ Project



     2. 選取GLUT Project ➝ Go ➝ Next


    3. 點選三個點,點選目錄在桌面,加上專案名字 week06-1_TRT_robot2,Next ➝ Finish


    4. 點選week01-2_GLUT ➝ Sources ➝ main.c,匯入程式碼


    5. 複製貼上week05_     更改程式為

#include <GL/glut.h>

float angle = 0;
void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

    glutSolidSphere(0.02, 30, 30);

    glPushMatrix();
        glRotatef(angle, 0, 0, 1);
        glTranslatef(0.46, -0.05, 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_robot_hierarchy

1. 複製貼上week06-1_TRT_robot2,更改程式為

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

    glutSolidSphere(0.02, 30, 30);
    glutSolidTeapot(0.3);

    glPushMatrix();
        //glTranslatef(-0.5, 0);
        glTranslatef(0.49, 0.13, 0);
        glRotatef(angle, 0, 0, 1);
        glTranslatef(0.46, -0.05, 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-2");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}


1. 更改原程式為
#include <GL/glut.h>
float angle = 0;
void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    glutSolidSphere(0.02, 30, 30);
    glutSolidTeapot(0.3);

    glPushMatrix();
        glTranslatef(0.49, 0.13, 0);
        glRotatef(angle, 0, 0, 1);
        glTranslatef(0.46, -0.05, 0);
        glutSolidTeapot(0.3);

        glPushMatrix();
            glTranslatef(0.49, 0.13, 0);
            glRotatef(angle, 0, 0, 1);
            glTranslatef(0.46, -0.05, 0);
            glutSolidTeapot(0.3);
        glPopMatrix();

    glPopMatrix();

    glutSwapBuffers();
    angle++;
}

int main(int argc, char* argv[] )
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week06-2");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}



week06-3_TRT_robot_arm_hand_right_left

1. 複製week06-1_TRT_robot2貼上,更改程式為
#include <GL/glut.h>
float angle = 0;
void drawHand()
{
    glPushMatrix();
        glScalef(1, 0.3, 0.3);
        glutSolidCube(0.5);
    glPopMatrix();
}

void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

    glPushMatrix();
        glRotatef(angle, 0, 0, 1);
        glTranslatef(0.25, 0, 0);
        drawHand();
    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();
}




1. 更改程式為
#include <GL/glut.h>
float angle = 0;
void drawHand()
{
    glPushMatrix();
        glScalef(1, 0.3, 0.3);
        glutSolidCube(0.5);
    glPopMatrix();
}

void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

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

    glutSwapBuffers();
    angle++;
}

int main(int argc, char* argv[] )
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week06-3");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}


1. 更改程式為
#include <GL/glut.h>
float angle = 0;
void drawHand()
{
    glPushMatrix();
        glScalef(1, 0.3, 0.3);
        glutSolidCube(0.5);
    glPopMatrix();
}

void display()
{
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

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

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

    glutSwapBuffers();
    angle++;
}

int main(int argc, char* argv[] )
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week06-3");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}




沒有留言:

張貼留言