2023年3月15日 星期三

ww-week05-T-R-T特定軸轉

0.在https://jsyeh.org/3dcg10/中下載[data][win32] glut32.dll三個檔案 / 在資料夾中開啟後分別解壓縮 / 將data資料夾放到window裡

/ 開啟window.Transformation.exe 複習上週移動glTranslatef()、旋轉glRotatef()和型變glScalef()

※1.藍色車子2.型變3.轉動4.移動

※交換旋轉和移動:移動在下(公轉)、移動在上(自轉)
⭐ 程式由下往上讀

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

   Next/選擇桌面freeglut檔/Next/執行


2.移動、旋轉放前放後間的關係:將上週week4-1從github拿來用/更改程式碼/茶壺對Z軸旋轉綠色先旋轉再移動、紅色先移動在旋轉
#include <GL/glut.h>
float angle =0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glColor3f(0,1,0);///green
    glPushMatrix();
        glTranslatef(0.8,0,0);///最後一步綠色移動
        glRotatef( angle,0,0,1);///改對Z軸轉
        glutSolidTeapot( 0.3 );
    glPopMatrix();

    glColor3f(1,0,0);///red
    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("week04");

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

3. 用老師範例的prossing畫出小人,來觀察移動和旋轉的前後關係

    將要轉動的手臂放到中心glTranslate()

                 

      /讓手臂對Z軸轉動glRotatef()

        /將轉動中的手臂掛回肩膀上 glTranslate()

 
4.下週小考內容:
glPushMatrix();
glTranslatef(-0.5,-0.9,0);///step3把轉動的手軸掛到正確位置
glRotate(-45,0,0,1);///step2順時針轉45度
glTranslatef(-0.8,0.9,0);///step1把手中心,放到世界中心
drawHand();
glPopMatrix();

6.練習自己寫:開新專案/更改檔案名稱week05-2_TRT_robot/將week05-1的程式碼拿來用/更改程式碼,將手臂掛上身體
#include <GL/glut.h>
float angle =0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glColor3f(0,1,0);///green身體
    glPushMatrix();
        glutSolidCube(0.5);

        glPushMatrix();
            glTranslatef(0.25,0.25,0);///step3把手臂掛在右上角
            glRotatef(angle,0,0,1);///step2轉動
            glTranslatef(0.25,0.25,0);///step1把旋轉中心放在正中間

            glColor3f(1,0,0);///red手臂
            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();
}
⭐ 程式由下往上讀
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

沒有留言:

張貼留言