2023年3月15日 星期三

week05



 week05

打開下載好的Transformation


glTranslatef ///上下左右移動

glRotatef  ///轉動

glScalef ///高矮胖瘦

glBegin(...);  ///藍色車子

...

交換rotate跟translate的位置

glRotatef ///整個轉動
glTranslatef ///移動到右邊的
#include <GL/glut.h>

float angle = 0;
void display()

{

    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); ///清背景
    glColor3f(0,1,0); ///綠色

    glPushMatrix();
    glTranslatef(0.8,0,0);  ///最後是綠色的移動

        glRotatef(angle, 0, 0, 1);  ///改對z軸轉

        glutSolidTeapot( 0.3 );

    glPopMatrix();



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

    glPushMatrix();


        glRotatef(angle, 0, 0, 1);///改對Z軸轉///最後是紅色的轉動

        glTranslatef(0.8,0,0);

        glutSolidTeapot( 0.3 );

    glPopMatrix();

    glutSwapBuffers();


    angle++;

}

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

{

    glutInit(&argc, argv);

    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);

    glutCreateWindow("week05");



    glutDisplayFunc(display);

    glutIdleFunc(display);

    glutMainLoop();

}

 畫出機器人的頭 身體 手
更改程式碼的位置,讓手的轉軸在肩膀上




期中作業範例:
glPushMatrix();
glTranslatef(-0.5,-0.9,0);
glRotatef(-45,0,0,1);
glTranslatef(-0.8,0.9,0);
drawHand();
glPopMatrix();


做出兩個方塊,讓轉軸在綠色方塊上,順時鐘轉動
#include <GL/glut.h>

float angle = 0;
void display()

{

    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    glColor3f(0,1,0);  ///綠色身體
    glPushMatrix();
    glutSolidCube(0.5);
    glPushMatrix();
    glTranslatef(0.25,0.25,0);  ///把整個東西掛在右上角
    glRotatef(angle,0,0,1);  ///轉動
    glTranslatef(0.25,0.25,0);  ///把旋轉中心,放到中心
    glColor3f(1,0,0);    ///紅色手臂
    glutSolidCube(0.5);


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

}












沒有留言:

張貼留言