2021年3月31日 星期三

Lm's圖學筆記week06

 

 

用上週程式修改,使自動旋轉

 #include <GL/glut.h>
float angle=0; ///TODO:
void display()
{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();
    glRotatef(angle, 0, 0, 1);
       glutSolidCube(1); ///todo:畫個方塊
       glPopMatrix();
    glutSwapBuffers();
    angle++; ///todo:
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08373056 !!!");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}

 

變藍條轉動

 #include <GL/glut.h>
float angle=0; ///TODO:
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glRotatef(angle, 0, 0, 1);
    glScalef(0.5,0.1,0.1);
    glColor3f(0,0,1);
       glutSolidCube(1); ///todo:畫個方塊
       glPopMatrix();
    glutSwapBuffers();
    angle++; ///todo:
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08373056 !!!");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}

把關節移到中心

 #include <GL/glut.h>

float angle=0; ///TODO:

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

    glRotatef(angle, 0, 0, 1);

    glTranslated(0.25,0,0);

    glScalef(0.5,0.1,0.1);

    glColor3f(0,0,1);

       glutSolidCube(1); ///todo:畫個方塊

       glPopMatrix();

    glutSwapBuffers();

    angle++; ///todo:

}

int main(int argc, char ** argv)

{

    glutInit( &argc, argv );

    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );

    glutCreateWindow("08373056 !!!");

    glutDisplayFunc(display);

    glutIdleFunc(display);

    glutMainLoop();

}



                                                        把關節移到右上角並新增一個身體 

 #include <GL/glut.h>

float angle=0; ///TODO:

void hand(){

glPushMatrix();

 glScalef(0.5,0.1,0.1);

    glColor3f(0,0,1);

    glutSolidCube(1);

    glPopMatrix();

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glColor3f(1,1,1);glutSolidCube(1);///大身體

    glPushMatrix();

    glTranslated(0.5,0.5,0);

    glRotatef(angle, 0, 0, 1);

    glTranslated(0.25,0,0);

   hand();

       glPopMatrix();

    glutSwapBuffers();

    angle++; ///todo:

}

int main(int argc, char ** argv)

{

    glutInit( &argc, argv );

    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );

    glutCreateWindow("08373056 !!!");

    glutDisplayFunc(display);

    glutIdleFunc(display);

    glutMainLoop();

}



                                                                          增加關節 

void hand(){

glPushMatrix();

 glScalef(0.5,0.1,0.1);

    glColor3f(0,0,1);

    glutSolidCube(1);

    glPopMatrix();

}

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glColor3f(1,1,1); glutSolidCube(0.5);///大身體

    glPushMatrix();

        glTranslatef(0.25,0.25,0);

        glRotatef(angle, 0, 0, 1);

        glTranslatef(0.25,0,0);

        hand(); ///細長的藍色上手

        glPushMatrix();

            glTranslatef(0.25,0,0);

            glRotatef( angle, 0, 0, 1);

            glTranslatef(0.25, 0, 0);

             hand(); ///下手臂/手肘

        glPopMatrix();

    glPopMatrix();

    glutSwapBuffers();

    angle++; ///todo:

}

int main(int argc, char ** argv)

{

    glutInit( &argc, argv );

    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );

    glutCreateWindow("08373056 !!!");

    glutDisplayFunc(display);

    glutIdleFunc(display);

    glutMainLoop();

}



#include <GL/glut.h>
float angle=0; ///TODO:
void hand(){
glPushMatrix();
 glScalef(0.5,0.1,0.1);
    glColor3f(0,0,1);
    glutSolidCube(1);
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(1,1,1); glutSolidCube(0.5);///大身體
    glPushMatrix();///右半邊
        glTranslatef(0.25,0.25,0);
        glRotatef(angle, 0, 0, 1);
        glTranslatef(0.25,0,0);
        hand(); ///細長的藍色上手
        glPushMatrix();
            glTranslatef(0.25,0,0);
            glRotatef( angle, 0, 0, 1);
            glTranslatef(0.25, 0, 0);
             hand(); ///下手臂/手肘
        glPopMatrix();
    glPopMatrix();

    glPushMatrix();///左半邊
        glTranslatef(-0.25,0.25,0);
        glRotatef(-angle, 0, 0, 1);
        glTranslatef(-0.25,0,0);
        hand(); ///細長的藍色上手
        glPushMatrix();
            glTranslatef(-0.25,0,0);
            glRotatef( -angle, 0, 0, 1);
            glTranslatef(-0.25, 0, 0);
             hand(); ///下手臂/手肘
        glPopMatrix();
    glPopMatrix();

    glutSwapBuffers();
    angle++; ///todo:
}
int main(int argc, char ** argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08373056 !!!");
    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}




 



沒有留言:

張貼留言

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...