2023年3月22日 星期三

:/ week06

開glut
做一個以圓圈為中心轉的茶壺

#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("week04");


    glutDisplayFunc(display);
    glutIdleFunc(display)
    glutMainLoop();
}

增加一個茶壺

#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);

    glPopMatrix();


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


    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}


再連接一個茶壺

#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("week04");


    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}


做一個旋轉的長方形

#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("GLUT Shapes");
glutDisplayFunc(display);
glutIdleFunc(display);

glutMainLoop();

}

再連一個長方形變成手臂
#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();

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

glutMainLoop();

}
複製成另一隻手臂
把位置改成負的

#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("GLUT Shapes");
glutDisplayFunc(display);
glutIdleFunc(display);

glutMainLoop();

}


沒有留言:

張貼留言