2023年3月22日 星期三

ww-week06-階層轉動

1.複習小考:

新增Project :選擇GLUT projectGo / Next / 先設定存放位置 / 再更改檔案名稱week06-1_TRT_robot2 / 小葉老師上課軟體 / freeglut檔案複製到桌面 / 將libfreeglut.a複製貼上後改成libglut32.a



   將上週程式碼week05-2_TRT_robots拿來改 / 畫出茶壺放置中心、旋轉後掛到正確位置
            

#include <GL/glut.h>
float angle =0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

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

    glPushMatrix();
        glTranslatef(0.5,0.5,0);///放到正確位置
        glRotatef(angle,0,0,1);///旋轉
        glTranslatef(0.46,-0.05,0);///旋轉中心放到世界的中心
        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();
}

 

2.雙層旋轉移動(茶壺)
開啟第二個Project / week06-2_TRT_robot_hierarchy / 由week06-1的程式碼來更改 / 增加一個茶壺當身體 / 並將原茶壺掛到身體的壺嘴

    加入第二階的旋轉
#include <GL/glut.h>
float angle =0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    ///glutSolidSphere(0.02,30,30);///中心點

    glutSolidTeapot(0.3);///身體茶壺

    glPushMatrix();

        glTranslatef(0.49,0.13,0);///掛到身體茶壺的壺嘴
        glRotatef(angle,0,0,1);
        glTranslatef(0.46,-0.05,0);
        glutSolidTeapot(0.3);///上手臂茶壺

        glPushMatrix();
            glTranslatef(0.49,0.13,0);///掛在上手臂茶壺的壺嘴
            glRotatef(angle,0,0,1);
            glTranslatef(0.46,-0.05,0);
            glutSolidTeapot(0.3);///下手臂茶壺
        glPopMatrix();

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

 

 
3.雙層旋轉移動(手臂)
開啟第三個Project / 專案名稱:week06-3_TRT_robot_hierarchy / 由上週程式碼week05-2_TRT_robots拿來改 / 用函數畫手臂並讓它旋轉

    加入第二層 / 註解外層手臂

    加入掛回手臂的程式碼 / 並解開外層的註解

    複製右手臂程式碼在下面貼上改成左手臂 / 記得位移改成負號

#include <GL/glut.h>
float angle =0;
void drawHand()
{
    glPushMatrix();
        glScalef(1,0.3,0.3);///變形方塊
        glutSolidCube(0.5);
    glPopMatrix();
}
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glPushMatrix();///右手臂
        glTranslatef(0.25,0,0);///掛回去
        glRotatef(angle,0,0,1);
        glTranslatef(0.25,0,0);
        drawHand();///畫上手臂
        glPushMatrix();
            glTranslatef(0.25,0,0);///掛回去
            glRotatef(angle,0,0,1);
            glTranslatef(0.25,0,0);
            drawHand();///畫下手臂
        glPopMatrix();
    glPopMatrix();

    glPushMatrix();///左手臂
        glTranslatef(-0.25,0,0);///掛回去
        glRotatef(angle,0,0,1);
        glTranslatef(-0.25,0,0);
        drawHand();///畫上手臂
        glPushMatrix();
            glTranslatef(-0.25,0,0);///掛回去
            glRotatef(angle,0,0,1);
            glTranslatef(-0.25,0,0);
            drawHand();///畫下手臂
        glPopMatrix();
    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();
}
git指令
cd desktop
git clone https://github.com/你的帳號/2023graphicsa
cd 2023graphicsa
加入檔案
git add . 
git status

git config --global user.email "jsyeh@mail.mcu.edu.tw"

git config --global user.name "jsyeh"

git commit -m "week10"

git push

沒有留言:

張貼留言