2019年3月8日 星期五

我九歲_Week03

2019/3/8 week3

今天內容: 移動Translate

/1/
老師先傳送給我們這個網址: http://www.cmlab.csie.ntu.edu.tw/~jsyeh/3dcg10/

下載解壓縮[data][win32] glut32.dll 
在桌面創一個windows的資料夾,把解壓縮後的data、win32、glut32.dill放進去



之後打開Transformation.exe

glTranslatef  ->可平移鏡頭
glRotatef  ->可旋轉鏡頭
glScalef  ->可對模型進行拉伸, 壓縮




搜尋freeglut點進網址並下載解壓縮 (同week1)






/2/
再來是教我們如何把茶壺移動到右上
原先的程式碼為

#include <GL/glut.h>
void display()
{
    glutSolidTeapot(0.3);//實心茶壺
    glutSwapBuffers( );//交換buffer顯示
}
int main( int argc , char ** argv )
{
    glutInit( &argc , argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );//double預先存好下一張圖片等待buffer交換,depth是3D的程式碼,要讓建的模有深度
    glutCreateWindow( "first window" );
    glutDisplayFunc( display );//畫布類型的存在,要讓跑出來的東西有地方放
    glutMainLoop( );
}

上面是只有茶壺的程式碼
但如果要讓茶壺往右上移動的話
要加一行程式碼

#include <GL/glut.h>
void display()
{
    glTranslatef(0.5,0.5,0);
    glutSolidTeapot(0.3);//實心茶壺
    glutSwapBuffers( );//交換buffer顯示
}
int main( int argc , char ** argv )
{
    glutInit( &argc , argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );//double預先存好下一張圖片等待buffer交換,depth是3D的程式碼,要讓建的模有深度
    glutCreateWindow( "first window" );
    glutDisplayFunc( display );//畫布類型的存在,要讓跑出來的東西有地方放
    glutMainLoop( );
}

執行後就會呈現


按一下後,這個茶壺就會跑到右上角



但這茶壺一直移動,所以要保護他
加上兩行程式碼:
glPushMatrix();    --> 備份矩陣
glPopMatix();    --> 還原矩陣
如此一來,茶壺就不會一直移動了


沒有留言:

張貼留言