2023年3月15日 星期三

擦 大哥 week05-TRT對特定軸轉動

 week05-TRT對特定軸轉動


Step01-1 開啟Transformation




到https://jsyeh.org/3dcg10/下載win32和data

開啟Transformation


口訣:左耳靠左肩





Translate物體移動(x,y,z)
Rotate旋轉
Scale物體長寬調整(寬,高,長)

Begin開始



Step01-2 開啟codeblocks


試著以茶壺做旋轉

程式碼:

#include <GL/glut.h>

float angle = 0;

void display()

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();

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

    glTranslatef(0.8,0,0);

    glRotatef(angle,0,0,1);

    glutSolidTeapot(0.3);



    glPopMatrix();

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

    glPushMatrix();

    glRotatef(angle,0,0,1);

    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("GLUT Shapes");

glutDisplayFunc(display);

glutIdleFunc(display);

glutMainLoop();

}



Step02-1 利用老師寫的畫圖程式畫出小人來理解


畫出小人 很怪對吧 所以用移動接上手臂



Step03-1


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

glutDisplayFunc(display);

glutIdleFunc(display);

glutMainLoop();

}



沒有留言:

張貼留言