2023年3月22日 星期三

第六週 - 階層轉動

Week06-1 複習考試內容

貼上上週程式碼 Week05-2_TRT_robot
劃出一個茶壺,使把手位置(要轉的中心)放到中心點



///貼上上週程式碼Week05-2_TRT_robot
#include <GL/glut.h>
float angle = 0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSolidSphere(0.02,30,30);///正中心的圓球

    glPushMatrix();
        glRotatef(angle,0,0,1);
        glTranslatef(0.444,-0.05,0);///(1)把轉動的中心,放在中心
        glutSolidTeapot(0.3);
    glPopMatrix();

    glutSwapBuffers();
    angle++;
}

int main(int argc, char* argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
    glutCreateWindow("week06");

    glutDisplayFunc(display);
    glutIdleFunc(display);
    glutMainLoop();
}


Week06-2 Hierarchy

step02-1 想了解階層轉動(Hierarchy)
其實就是很多個T_R_T 配合 Push & Pop


step02-2要更多層轉動
可以想像 glPushMatrix() 和 glPopMatrix() 像是程式的大括號
裡面要往右退一格。外面的動作,會影響到裡面跟著轉動


step03-1 再開一個新的程式week06-3,改用上週的glutSolidCube() 變形成長方形
慢慢建出他的T-R-T多層的關係 有左手臂、手肘等
使用drawHand()函式幫忙 讓display()裡面不要太複雜


step03-2

step03-2

step03-2 最後


沒有留言:

張貼留言