2023年3月16日 星期四

りしれ供さ小 Week05 T-R-T 對特定軸轉動

 

WEEK05

01-1的內容跟上上周一樣不要懷疑

Step01-1

3D圖學:網站下載 下載window.zip 和 data.zip






window.zip和data.zip解壓縮把data放進window裡面


打開Transformation.exe





出現一台跑車 可以用glTranlatef更改攝影機的XYZ軸

glRotatef可以更改角度,glScalef可以更改大小

Step01-2


 複習上禮拜的旋轉,移動,角度。







Step01-3


開啟CODEBLOCK


開專案







打專案名稱 選擇檔案存檔位置



解壓縮freeglut

開啟freeglut>lib>複製libfreeglut>貼上名稱改成libglut32
codeblock選擇freeglut完成>他跑出來就會生成三個神祕圖形



然後複製上禮拜的程式碼

#include <GL/glut.h>
float angle = 0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle,0,1,0);
        glutSolidTeapot(0.3);
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();
    }


就會出現旋轉茶壺瞜~~~~~~

更改一下程式碼

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

glColor3f(1,0,0);///紅色
glPushMatrix();
glRotatef(angle,0,0,1);
glTranslatef(0.8,0,0);///旋轉再移動
        glutSolidTeapot(0.3);
glPopMatrix();

glColor3f(0,1,0);///綠色
glPushMatrix();
glTranslatef(0.8,0,0);
glRotatef(angle*1.5,0,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("week05");
    glutDisplayFunc(display);
glutIdleFunc(display);
    glutMainLoop();
    }







Step02-1



老師傳送的一個程式




畫了一個神奇的圖。。。




旋轉他的手臂






Step03-1








開新的專案







打專案名稱 選擇檔案存檔位置




把程式碼改掉

改成

#include <GL/glut.h>
float angle = 0;
void cube()
{
    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);
cube();
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();
    }



做出了一個正方形身體和一個會旋轉的手臂但是手臂位置好像不太對



#include <GL/glut.h>
float angle = 0;
void cube()
{
    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);
cube();
glPopMatrix();

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



這樣就做出兩隻在揮動的雙手了🙌




Step03-2


最後上傳GITHUB✌

安裝git 開啟GIT bash

cd desktop 進入桌面
git clone 複製你的檔案
cd 進入你的檔案
git add . 加入你的檔案
git status 確認你的檔案
git config --global user.email "你的Gmail"
git config --global user.name "你的GitHubID"
git commit -m "你的周次"
git push 上傳

J束



沒有留言:

張貼留言