2024年4月25日 星期四

week10

 第一步:建立專案

安裝freegut, 把lib\libferrglut.a複製成libglut32.a

再把上週的程式碼貼上



改程式碼


用myBody myArm


#include <GL/glut.h>

void myBody(){

    glPushMatrix();

        glColor3f(1, 0, 0);///紅色的

        glutWireCube(0.6);

glPopMatrix();

}

void myArm()

{

    glPushMatrix();

        glColor3f(0, 1, 0);///綠色的

        glScalef(1, 0.4,0.4);

        glutWireCube(0.3);

     glPopMatrix();

}

float angle = 0;

void display()

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);


myBody();

    glPushMatrix();

        glRotatef(angle++, 0, 0, 1);

        myArm();

    glPopMatrix();


    glutSwapBuffers();

}

int main(int argc, char*argv[])

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);

glutCreateWindow("week10");

glutDisplayFunc(display);

glutIdleFunc(display);

glutMainLoop();

}


myArm旋轉

加上這行: glTranslatef(0.15, 0, 0);


#include <GL/glut.h>
void myBody()
{
    glPushMatrix();
        glColor3f(1, 0, 0);///紅色的
        glutWireCube(0.6);
glPopMatrix();
}
void myArm()
{
    glPushMatrix();
        glColor3f(0, 1, 0);///綠色的
        glScalef(1, 0.4,0.4);
        glutWireCube(0.3);
     glPopMatrix();
}
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    myBody();
    glPushMatrix();
        glTranslatef(0.3,0.3,0);
        glRotatef(angle++,0,0,1);
        glTranslatef(0.15,0,0);
        myArm();
        glPushMatrix();
            glTranslatef(0.15,0,0);
            glRotatef(angle++,0,0,1);
            glTranslatef(0.15,0,0);
            myArm();
        glPopMatrix();
    glPopMatrix();
    glutSwapBuffers();

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


手臂旋轉

#include <GL/glut.h>
void myBody()
{
    glPushMatrix();
        glColor3f(1, 0, 0);///紅色的
        glutWireCube(0.6);
glPopMatrix();
}
void myArm()
{
    glPushMatrix();
        glColor3f(0, 1, 0);///綠色的
        glScalef(1, 0.4,0.4);
        glutWireCube(0.3);
     glPopMatrix();
}
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    myBody();

    glPushMatrix();
        glTranslatef(0.3,0.3,0);
        glRotatef(angle++,0,0,1);
        glTranslatef(0.15,0,0);
        myArm();
        glPushMatrix();
            glTranslatef(0.15,0,0);
            glRotatef(angle++,0,0,1);
            glTranslatef(0.15,0,0);
            myArm();
        glPopMatrix();
    glPopMatrix();

     glPushMatrix();
        glTranslatef(-0.3,0.3,0);
        glRotatef(angle++,0,0,1);
        glTranslatef(-0.15,0,0);
        myArm();
        glPushMatrix();
            glTranslatef(-0.15,0,0);
            glRotatef(angle++,0,0,1);
            glTranslatef(-0.15,0,0);
            myArm();
        glPopMatrix();
    glPopMatrix();

    glutSwapBuffers();

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


用滑鼠操控
#include <GL/glut.h>
void myBody()
{
    glPushMatrix();
        glColor3f(1, 0, 0);///紅色的
        glutWireCube(0.6);
glPopMatrix();
}
void myArm()
{
    glPushMatrix();
        glColor3f(0, 1, 0);///綠色的
        glScalef(1, 0.4,0.4);
        glutWireCube(0.3);
     glPopMatrix();
}
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    myBody();

    glPushMatrix();
        glTranslatef(0.3,0.3,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.15,0,0);
        myArm();
        glPushMatrix();
            glTranslatef(0.15,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(0.15,0,0);
            myArm();
        glPopMatrix();
    glPopMatrix();

     glPushMatrix();
        glTranslatef(-0.3,0.3,0);
        glRotatef(angle,0,0,1);
        glTranslatef(-0.15,0,0);
        myArm();
        glPushMatrix();
            glTranslatef(-0.15,0,0);
            glRotatef(angle,0,0,1);
            glTranslatef(-0.15,0,0);
            myArm();
        glPopMatrix();
    glPopMatrix();

    glutSwapBuffers();

}
void motion(int x, int y){
    angle = x;
    glutPostRedisplay();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week10");

glutDisplayFunc(display);
glutMotionFunc(motion);
glutIdleFunc(display);

glutMainLoop();
}

反方向用滑鼠操控
#include <GL/glut.h>
void myBody()
{
    glPushMatrix();
        glColor3f(1, 0, 0);///紅色的
        glutWireCube(0.6);
glPopMatrix();
}
void myArm()
{
    glPushMatrix();
        glColor3f(0, 1, 0);///綠色的
        glScalef(1, 0.4,0.4);
        glutWireCube(0.3);
     glPopMatrix();
}
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    myBody();

    glPushMatrix();
        glTranslatef(0.3,0.3,0);
        glRotatef(-angle,0,0,1);
        glTranslatef(0.15,0,0);
        myArm();
        glPushMatrix();
            glTranslatef(0.15,0,0);
            glRotatef(-angle,0,0,1);
            glTranslatef(0.15,0,0);
            myArm();
        glPopMatrix();
    glPopMatrix();

     glPushMatrix();
        glTranslatef(-0.3,0.3,0);
        glRotatef(-angle,0,0,1);
        glTranslatef(-0.15,0,0);
        myArm();
        glPushMatrix();
            glTranslatef(-0.15,0,0);
            glRotatef(-angle,0,0,1);
            glTranslatef(-0.15,0,0);
            myArm();
        glPopMatrix();
    glPopMatrix();

    glutSwapBuffers();

}
void motion(int x, int y){
    angle = x;
    glutPostRedisplay();
}
int main(int argc, char*argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("week10");

glutDisplayFunc(display);
glutMotionFunc(motion);
glutIdleFunc(display);

glutMainLoop();
}


撥放音樂
開頭新增:#include <mmsystem.h>          PlaySound("C:/horse.wav",NULL, SND_ASYNC);

沒有留言:

張貼留言