2022年3月8日 星期二

Ru的電腦圖學筆記>

💩Step1

    1. http;//jsyeh.org/3dcg10/

    2. 下載 data , win32

        -windows.zip 解壓至windows 👉 下載\windows\Transformation.exe

        -data.zip 👉下載\將data.zip裡的data檔案複製到windows裡

    3.執行 Transformation.exe

        -右上角:按右鍵換模型

        -下方:glTranslatef (左右,上下,前後)


💩Step2 無敵茶壺進化史
    1.建立一個新的GLUT檔案
        -檔名:week03_translate

    2.製作出一個黃色的茶壺
    
        #include <GL/glut.h>
        void display()
        {
            glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
            glPushMatrix();///備份矩陣(備份舊的位置)
                ///移動會累積,因為他還會修改矩陣
                glTranslatef(0.5,0.5,0);///右上角
                glColor3f(1,1,0);///黃色
                glutSolidTeapot(0.3);///茶壺
            glPopMatrix();///還原矩陣(還原舊的位置)
            glutSwapBuffers();
        }
        int main(int argc, char** argv)
        {
            glutInit(&argc, argv);
            glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
            glutCreateWindow("week03 移動");
            glutDisplayFunc(display);
            glutMainLoop();
        }
    3.製作出四個茶壺


        #include <GL/glut.h>
        void myTeapot(float x, float y)
        {
            glPushMatrix();///備份矩陣(備份舊的位置)
                ///移動會累積,因為他還會修改矩陣
                glTranslatef(x,y,0);///右上角
                glColor3f(1,1,0);///黃色
                glutSolidTeapot(0.3);///茶壺
            glPopMatrix();///還原矩陣(還原舊的位置)
        }
        void display()
        {
            glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
            myTeapot(0.5,0.5);
            myTeapot(0.5,-0.5);
            myTeapot(-0.5,-0.5);
            myTeapot(-0.5,0.5);
            glutSwapBuffers();
        }
        int main(int argc, char** argv)
        {
            glutInit(&argc, argv);
            glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
            glutCreateWindow("week03 移動");
            glutDisplayFunc(display);
            glutMainLoop();
        }
    4.製作一個利用滑鼠左鍵控制的茶壺

        
 #include <GL/glut.h>
        float mouseX=0, mouseY=0;
        void myTeapot(float x, float y)
        {
            glPushMatrix();///備份矩陣(備份舊的位置)
                ///移動會累積,因為他還會修改矩陣
                glTranslatef(x,y,0);///右上角
                glColor3f(1,1,0);///黃色
                glutSolidTeapot(0.3);///茶壺
            glPopMatrix();///還原矩陣(還原舊的位置)
        }
        void display()
        {
            glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
            myTeapot( (mouseX-150)/150.0,-(mouseY-150)/150.0 );
            glutSwapBuffers();
        }
        void mouse(int button, int state, int x,int y)
        {
            mouseX=x; mouseY=y;
        }
        int main(int argc, char** argv)
        {
            glutInit(&argc, argv);
            glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
            glutCreateWindow("week03 移動");
            glutDisplayFunc(display);
            glutMouseFunc(mouse);
            glutMainLoop();
        }

    5.新增能夠看見茶壺座標的功能!


        
        #include <GL/glut.h>
        #include <stdio.h>///printf()印東西用的
        void myTeapot(float x, float y)
        {
            glPushMatrix();///備份矩陣(備份舊的位置)
                ///移動會累積,因為他還會修改矩陣
                glTranslatef(x,y,0);///右上角
                glColor3f(1,1,0);///黃色
                glutSolidTeapot(0.3);///茶壺
            glPopMatrix();///還原矩陣(還原舊的位置)
        }
        void display()
        {
            glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
            myTeapot( (mouseX-150)/150.0,-(mouseY-150)/150.0 );
            glutSwapBuffers();
        }
        void mouse(int button, int state, int x,int y)
        {
            printf("%d %d %d %d\n",button,state,x,y);
            mouseX=x; mouseY=y;
        }
        int main(int argc, char** argv)
        {
            glutInit(&argc, argv);
            glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH);
            glutCreateWindow("week03 移動");
            glutDisplayFunc(display);
            glutMouseFunc(mouse);
            glutMainLoop();
        }

Step3 按照之前的步驟上傳到 github!

完成!💕💕💕💕💕💕💕

沒有留言:

張貼留言

VERY BEAUTIFUL, VERY POWERFUL

一.     一樣先安裝且設定好freeglut,OpecCV, 開啟CodeBlocks建立新專案 week11_gundam,                 把 MyGundam.zip下載解壓縮後的data資料夾放到freeglut/bin裡面 把week09_openc...