2024年4月22日 星期一

熱血的week10


1.T-R-T關節運動

2.主題:階層運動

week10-0_sample:

解壓縮 freeglut-MinGW-3.0.0-1.mp.zip

把解壓縮完的檔案移到桌面

把124KB的檔案改名成 libglut32.a

week10_TRT_glutSolidCube_myBody_myArm: 

先複製上周week09-2的程式碼

#include <GL/glut.h>

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

    glTranslatef(-0.6,+0.3,0);

        glutSolidTeapot(0.3);

    glPopMatrix();

    glPushMatrix();

        glTranslatef(+0.0,+0.3,0);

        glutSolidCube(0.3);

    glPopMatrix();

    glPushMatrix();

        glTranslatef(+0.6,+0.3,0);

        glutSolidSphere(0.3,30,30);

    glPopMatrix();

    glutSwapBuffers();

}

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

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week09-2 glutSolid¨t¦C");

    glutDisplayFunc(display);

    glutMainLoop();

}

要用glutSolidCube(0.3)用兩次

#include <GL/glut.h>

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glTranslatef(-0.6,+0.3,0);

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

        glutSolidCube(0.3);///方塊

    glPopMatrix();

    glPushMatrix();

        glTranslatef(+0.0,+0.3,0);

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

        glScalef(1.5,0.5,0.5);

        glutSolidCube(0.3);

    glPopMatrix();

    glutSwapBuffers();

}

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

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week09-2 glutSolid¨t¦C");

    glutDisplayFunc(display);

    glutMainLoop();

}



#include <GL/glut.h>

void myBody(){

    glColor3f(1,0,0);

    glutSolidCube(0.3);

}

void myArm(){

    glColor3f(0,1,0);

    glScalef(1.5,0.5,0.5);

    glutSolidCube(0.3);

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glTranslatef(-0.6,+0.3,0);

        myBody();///把程式移上去

    glPopMatrix();

    glPushMatrix();

        glTranslatef(+0.0,+0.3,0);

        myArm();///把程式移上去

    glPopMatrix();

    glutSwapBuffers();

}

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

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week09-2 glutSolid¨t¦C");

    glutDisplayFunc(display);

    glutMainLoop();

}


week10-2_TRT_glutIdleFunc_rotate:

貼上week10-1的程式

加上 float angle=0

        glRotatef(angle,x,y,z) 

        glutIdleFunc(display);


#include <GL/glut.h>

void myBody(){

    glColor3f(1,0,0);

    glutSolidCube(0.3);

}

void myArm(){

    glColor3f(0,1,0);

    glScalef(1.5,0.5,0.5);

    glutSolidCube(0.3);

}

float angle=0;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glTranslatef(-0.6,+0.3,0);

        myBody();

    glPopMatrix();

    glPushMatrix();

        glTranslatef(+0.0,+0.3,0);

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

        myArm();

    glPopMatrix();

    glutSwapBuffers();

}

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

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week09-2 glutSolid¨t¦C");

    glutDisplayFunc(display);

    glutIdleFunc(display);

    glutMainLoop();

}




貼上week10-2的程式

#include <GL/glut.h>

void myBody(){

    glColor3f(1,0,0);

    glutSolidCube(0.3);

}

void myArm(){

    glColor3f(0,1,0);

    glScalef(1.5,0.5,0.5);

    glutSolidCube(0.3);

}

float angle=0;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

        glTranslatef(-0.6,+0.3,0);

        myBody();

    glPopMatrix();

    glPushMatrix();

        ///glTranslatef(+0.0,+0.3,0);

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

        glTranslatef(0.225,0,0);///把移度中心做移動

        myArm();

    glPopMatrix();

    glutSwapBuffers();

}

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

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week09-2 glutSolid¨t¦C");

    glutDisplayFunc(display);

    glutIdleFunc(display);

    glutMainLoop();

}

week10-4_TRT_glTranslatef_glRotatef_glTranslatef:


#include <GL/glut.h>
void myBody(){
    glColor3f(1,0,0);
    glutWireCube(0.;/6)//變心
}
void myArm(){
    glColor3f(0,1,0);
    glScalef(1.5,0.5,0.5);
    glutWireCube(0.3);///變空心
}
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        ///glTranslatef(-0.6,+0.3,0);
        myBody();
    glPopMatrix();
    glPushMatrix();
        glTranslatef(+0.3,+0.3,0);
        glRotatef(angle++,0,0,1);
        glTranslatef(0.225,0,0);///把移度中心做移動
        myArm();
    glPopMatrix();
    glutSwapBuffers();
}
int main(int argc, char *argv[])
{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);

    glutCreateWindow("week09-2 glutSolid¨t¦C");

    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}
把week10-2的中心點移到正方形中間


沒有留言:

張貼留言