2023年3月16日 星期四

10160756廖云瑄 week05

 week05 TRT特定轉軸

先到https://jsyeh.org/3dcg10/下載[data][win32]



到資料夾解壓縮[win32]再把[data]放進去
點開transformation.exe


glTranslate 移動 
glRotatef 旋轉 
glScalef 長高的

T-R:移動旋轉長高藍車

R-T:旋轉移動長高藍車

複習上週的旋轉

[week05-1]

更改glRotatef的數值讓茶壺改變方向旋轉
再加上一個茶壺並更改顏色
還有旋轉的速度跟方向
 glColor3f(1,0,0);
    glPushMatrix();
        glRotatef(angle,0,0,1);
        glTranslatef(0.8,0,0);
        glutSolidTeapot(0.3);
    glPopMatrix();

    glColor3f(0,1,0);
    glPushMatrix();
        glRotatef(angle*1.5,0,0,1);
        glTranslatef(0.8,0,0);
        glutSolidTeapot(0.3);
    glPopMatrix();






打開老師的程式
畫出人跟手臂
步驟
1.先把所有移動得程式碼拉去外面
2.先按 glTranslatef把手臂放進身體正中心點
3.再把 glRotatef放上去讓他旋轉
4.再按glTranslatef把手臂掛在肩膀上就可以了

[week05-2]

打開codeblocks複製前一個程式碼並更改
加入一個正方形的大CUBE
再加入兩個會旋轉的長方形
把手臂移動到方塊的右上角

#include <GL/glut.h>
float angle = 0;
void myCube()

{
    glPushMatrix();
        glScalef(0.5,0.2,0.2);
        glutSolidCube(1);
    glPopMatrix();

}
void display()
{
     glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

     glColor3f(1,1,1);
     glutSolidCube(1);

    glPushMatrix();
        glTranslatef(0.5,0.5,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        glColor3f(0,1,0);
        myCube();
    glPopMatrix();

    glPushMatrix();
        glTranslatef(-0.5,0.5,0);
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        glColor3f(0,1,0);
        myCube();
    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();
}
這裡








沒有留言:

張貼留言