2022年3月8日 星期二

獻祭肝臟的電腦圖學課堂筆記_week03

1.至https://jsyeh.org/3dcg10

   下載data.zip windows.zip 

2.windows.zip 解壓

  data.zip解壓 並放入=> windows

3.執行Transformation.exe,在右上角點右鍵可換模型,左下角可拖動數值







茶壺
#include <GL/glut.h> ///使用GLUT外掛,簡化程式
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) ///main()主函式 進階版
{
    glutInit( &argc, argv); ///把參數,送給 glutInit 初始化
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH ); ///雙緩衡區 + 3D深度功能
    glutCreateWindow("第02週的程式"); ///開 GLUT 視窗

    glutDisplayFunc(display); ///用來顯示的函式

    glutMainLoop(); ///主要的程式迴圈
}




四個茶壺

#include <GL/glut.h>


void myTeapot(float x,float y)

{

///    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清畫面

    glPushMatrix();///備份舊的位置

        ///移動會累積,因為它會修改矩陣

        glTranslatef(x,y,0);///右上角

        glColor3f(1,1,0);///顏色(RGB)

        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);///把參數給glutInit 初始化

    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );///雙緩衝區+3D深度功能

    glutCreateWindow("week03-移動");///開GLUT視窗


    glutDisplayFunc(display);///用來顯示的函式


    glutMainLoop();



讓茶壺跟著滑鼠移動

#include <GL/glut.h>
float mouseX=0, mouseY=0;
void myTeapot(float x,float y)
{
///    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);///清畫面
    glPushMatrix();///備份舊的位置
        ///移動會累積,因為它會修改矩陣
        glTranslatef(x,y,0);///右上角
        glColor3f(1,1,0);///顏色(RGB)
        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);///把參數給glutInit 初始化
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );///雙緩衝區+3D深度功能
    glutCreateWindow("week03-移動");///開GLUT視窗

    glutDisplayFunc(display);
    glutMouseFunc(mouse);

    glutMainLoop();
}


沒有留言:

張貼留言

VERY BEAUTIFUL, VERY POWERFUL

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