2023年3月23日 星期四

鈴芽應該隨手關門 Week06 T-R-T 階層轉動

WEEK06

 期中考練習

Step01-1


開啟CODEBLOCK


開專案







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



解壓縮freeglut

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



然後把原本的程式碼刪掉
複製上周step03-2的程式碼

Step01-2



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



更改一下程式

#include <GL/glut.h>
float angle = 0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
            glutSolidSphere(0.01,30,30);///中心點

glPushMatrix();
glRotatef(angle,0,0,1); ///茶杯轉動
glTranslatef(0.45,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("week06");
    glutDisplayFunc(display);
glutIdleFunc(display);
    glutMainLoop();
    }


讓茶杯往右上移動




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

glPushMatrix();
glTranslatef(0.5,0.5,0);///往中心點右上方移動
glRotatef(angle,0,0,1);
glTranslatef(0.45,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("week06");
    glutDisplayFunc(display);
glutIdleFunc(display);
    glutMainLoop();
    }









Step02-1



開一個新的專案把程式碼刪掉
貼上上一個的程式碼;
再改掉一些程式碼:


#include <GL/glut.h>
float angle = 0;
void mycube()///方塊函數
{
    glPushMatrix();
    glScalef(1,0.3,0.3);
    glutSolidCube(0.5);
    glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
            glutSolidSphere(0.01,30,30);

glPushMatrix();
        ///glTranslatef(0.5,0.5,0);
///glRotatef(angle,0,0,1);
///glTranslatef(0.45,0,0);
mycube();
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();
    }






把剛剛註解掉的程式碼加回來


#include <GL/glut.h>
float angle = 0;
void mycube()
{
    glPushMatrix();
    glScalef(1,0.3,0.3);
    glutSolidCube(0.5);
    glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
            glutSolidSphere(0.01,30,30);

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




這樣他就往右移動,然後逆時鐘旋轉>:(




Step02-2


增加一個方塊



#include <GL/glut.h>
float angle = 0;
void mycube()
{
    glPushMatrix();
    glScalef(1,0.3,0.3);
    glutSolidCube(0.5);
    glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
            glutSolidSphere(0.01,30,30);

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





Step02-3


那我們變成4


#include <GL/glut.h>
float angle = 0;
void mycube()
{
    glPushMatrix();
    glScalef(1,0.3,0.3);
    glutSolidCube(0.5);
    glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
            glutSolidSphere(0.01,30,30);

glPushMatrix();
        glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
mycube();
glPushMatrix();
        glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
mycube();
glPopMatrix();
glPopMatrix();

glPushMatrix();
        glTranslatef(-0.25,0,0);///變成負數
glRotatef(angle,0,0,1);
glTranslatef(-0.25,0,0);///變成負數
mycube();
glPushMatrix();
        glTranslatef(-0.25,0,0);///變成負數
glRotatef(angle,0,0,1);
glTranslatef(-0.25,0,0);///變成負數
mycube();
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();
    }


Step02-4



把它改成用滑鼠來移動


#include <GL/glut.h>
float angle = 0;
void mycube()
{
    glPushMatrix();
    glScalef(1,0.3,0.3);
    glutSolidCube(0.5);
    glPopMatrix();
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
            glutSolidSphere(0.01,30,30);

glPushMatrix();
        glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
mycube();
glPushMatrix();
        glTranslatef(0.25,0,0);
glRotatef(angle,0,0,1);
glTranslatef(0.25,0,0);
mycube();
glPopMatrix();
glPopMatrix();

glPushMatrix();
        glTranslatef(-0.25,0,0);
glRotatef(-angle,0,0,1);
glTranslatef(-0.25,0,0);
mycube();
glPushMatrix();
        glTranslatef(-0.25,0,0);
glRotatef(-angle,0,0,1);
glTranslatef(-0.25,0,0);
mycube();
glPopMatrix();
glPopMatrix();


        glutSwapBuffers();
}
void motion(int x,int y)
{
            angle = x;
}

int main(int argc,char *argv[])
    {
        glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE| GLUT_DEPTH);
    glutCreateWindow("week06");
    glutMotionFunc(motion);
    glutDisplayFunc(display);
glutIdleFunc(display);
    glutMainLoop();
    }




Step03-1


最後上傳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 上傳


結束


沒有留言:

張貼留言