




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、立方體的簡單三維交互式幾何變換這個學期對 opengl 的學習,使我對計算機圖形學的一些算法過程 有了更多的了解。 因為對三維圖形的顯示比較感興趣, 就做了立方體 的簡單三維交互式幾何變換。功能:鍵盤的方向鍵實現立方體的上下左右平移;A鍵,S鍵分別實現向前,向后旋轉;J鍵,K鍵分別實現放大,縮小;C鍵退出。 程序模塊 :1.該模塊為繪制一個立方體。void DrawBox()glBegin(GL_QUADS);/ 前面glColor3f(1,0,0);glVertex3f(-1.0f, -1.0f, 1.0f);/ 四邊形的左下glVertex3f( 1.0f, -1.0f, 1.0f);/
2、四邊形的右下glVertex3f( 1.0f,1.0f,1.0f);/ 四邊形的右上glVertex3f(-1.0f,1.0f,1.0f);/ 四邊形的左上/ 后面glColor3f(0,1,0);glVertex3f(-1.0f, -1.0f, -1.0f);/ 四邊形的右下glVertex3f(-1.0f,1.0f, -1.0f);/ 四邊形的右上glVertex3f( 1.0f,1.0f, -1.0f);/ 四邊形的左上glVertex3f( 1.0f, -1.0f, -1.0f); / 四邊形的左下/ 頂面glColor3f(0,0,1);glVertex3f(-1.0f,glVert
3、ex3f(-1.0f,glVertex3f( 1.0f,glVertex3f( 1.0f,1.0f, -1.0f);1.0f, 1.0f);1.0f, 1.0f);1.0f, -1.0f);/ 底面glColor3f(1,1,0);glVertex3f(-1.0f, -1.0f, -1.0f);/ 四邊形的左上/ 四邊形的左下 / 四邊形的右下 / 四邊形的右上四邊形的右上glVertex3f( 1.0f, -1.0f, -1.0f); / 四邊形的左上 glVertex3f( 1.0f, -1.0f, 1.0f); / 四邊形的左下 glVertex3f(-1.0f, -1.0f, 1.0f
4、); / 四邊形的右下/ 右面glColor3f(0,1,1);glVertex3f( 1.0f, -1.0f, -1.0f); / 四邊形的右下 glVertex3f( 1.0f, 1.0f, -1.0f); / 四邊形的右上 glVertex3f( 1.0f, 1.0f, 1.0f); / 四邊形的左上 glVertex3f( 1.0f, -1.0f, 1.0f); / 四邊形的左下/ 左面glColor3f(1,0,1);glVertex3f(-1.0f, -1.0f, -1.0f); / 四邊形的左下glVertex3f(-1.0f, -1.0f, 1.0f);/ 四邊形的右下glVe
5、rtex3f(-1.0f, 1.0f, 1.0f); / 四邊形的右上 glVertex3f(-1.0f, 1.0f, -1.0f);/ 四邊形的左上glEnd(); 2該模塊設置屏幕顏色和深度緩存,設置立方體的平移,縮放,旋 轉變換。void display() glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);/ 清空顏色和深度緩存glMatrixMode(GL_MODELVIEW);glLoadIdentity();/gluLookAt(2.0, 2.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);gITra n
6、slatef(0.0f+tx,0.0f+ty,-4.0f); 平移變換glScalef(1+sf,1+sf,1+sf); /縮放變換gIRotatef(ratX, 1.0f, O.Of, O.Of);/繞 X 軸的旋轉變換glRotatef(ratY, O.Of, 1.0f, O.Of);/繞 Y 軸的旋轉變換glRotatef(ratZ, O.Of, O.Of, 1.0f);/繞 Z 軸的旋轉變換DrawBox();glFlush();glutSwapBuffers();該模塊為重繪回調函數,在窗口首次創立或用戶改變窗口尺寸時被 調用。void reshape(int w, int h)gl
7、Viewport(0, 0, w, h);/ 指定視口的位置和大小 glMatrixMode(GL_PROJECTION);glLoadIdentity();/glFrustum(-1.0, 1.0, -1.0, 1.0, 3.1, 10.0);/gluPerspective(45,1,0.1,10.0);glOrtho(-2.0, 2.0, -2.0, 2.0, 2.0, 10.0);該模塊為設置深度緩存和啟動深度測試模式。void init()glClearColor (1.0, 1.0, 1.0, 1.0);glEnable(GL_DEPTH_TEST); / 啟動深度測試模式該模塊為設
8、置鍵盤的交互式操作。void myKeyboard(unsigned char key, int x, int y)if(key = a | key = A) ratX += 2;ratY += 2;ratZ += 2;if(key = s | key = S)ratX -= 2;ratY -= 2;ratZ -= 2;if(key = j | key = J)sf+=0.1;if(key = k | key = K)sf-=0.1;if(key = c | key = C)exit(0);glutPostRedisplay(); /重新調用繪制函數該模塊為設置鍵盤方向鍵的交互式操作。 voi
9、d myspecialKeyboard(int key,int x,int y) if(key = GLUT_KEY_UP )ty+=0.1;if(key = GLUT_KEY_DOWN)ty-=0.1;if(key =GLUT_KEY_LEFT)tx-=0.1;if(key=GLUT_KEY_RIGHT)tx+=0.1;glutPostRedisplay();主函數模塊,實現設置顯示模式窗口大小,位置 ,調用函數操作。int main(int argc, char* argv)glutInit(&argc,argv); / 初始 GLUT.glutInitDisplayMode (GLUT_
10、DEPTH |GLUT_DOUBLE |GLUT_RGB); / 設定顯示模式glutInitWindowSize(400,400); / 設定窗口大小glutInitWindowPosition(50,100); / 設定窗口位置glutCreateWi ndow(立方體的簡單三維交互式幾何變換”);/用前面指定參數創立glutReshapeFunc(reshape); 指/ 定重繪回調函數 glutDisplayFunc(display); / 進展一些初始化工作 glutKeyboardFunc( myKeyboard); / 指定鍵盤回調函數 glutSpecialFunc(myspe
11、cialKeyboard); 指/ 定鍵盤回調函數init();glutMainLoop();/ 進入無窮循環,等待事件處理功能截圖: 立方體的平移: 上平移 下平移: 左平移: 右平移: 放大: 縮小: 旋轉: 源程序: *include *include *include float ratX = 60; float ratY = 60; float ratZ = 60; float tx=0; float ty=0; float sf=0;void DrawBox()glBegin(GL_QUADS);/ 前面glColor3f(1,0,0);/ 四邊形的左下/ 四邊形的右下/ 四邊形的
12、右上/ 四邊形的左上 四邊形的右下/ 四邊形的右上/ 四邊形的左上四邊形的左下/ 四邊形的左上/ 四邊形的左下/ 四邊形的右下/ 四邊形的右上/ 四邊形的右上glVertex3f(-1.0f, -1.0f, 1.0f);glVertex3f( 1.0f, -1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);/ 后面glColor3f(0,1,0);glVertex3f(-1.0f, -1.0f, -1.0f); / glVertex3f(-1.0f, 1.0f, -1.0f); glVertex3
13、f( 1.0f, 1.0f, -1.0f);glVertex3f( 1.0f, -1.0f, -1.0f); / 頂面glColor3f(0,0,1); glVertex3f(-1.0f, glVertex3f(-1.0f, glVertex3f( 1.0f, glVertex3f( 1.0f,/ 底面glColor3f(1,1,0);1.0f, -1.0f);1.0f, 1.0f);1.0f, 1.0f);1.0f, -1.0f);glVertex3f(-1.0f, -1.0f, -1.0f);glVertex3f( 1.0f, -1.0f, -1.0f); / 四邊形的左上 glVerte
14、x3f( 1.0f, -1.0f, 1.0f); / 四邊形的左下glVertex3f(-1.0f, -1.0f, 1.0f); / 四邊形的右下/ 右面glColor3f(0,1,1);glVertex3f( 1.0f, -1.0f, -1.0f); / 四邊形的右下glVertex3f( 1.0f, 1.0f, -1.0f); / 四邊形的右上 glVertex3f( 1.0f, 1.0f, 1.0f); / 四邊形的左上 glVertex3f( 1.0f, -1.0f, 1.0f); / 四邊形的左下/ 左面glColor3f(1,0,1);glVertex3f(-1.0f, -1.0f
15、, -1.0f); / 四邊形的左下glVertex3f(-1.0f, -1.0f, 1.0f); / 四邊形的右下 glVertex3f(-1.0f, 1.0f, 1.0f); / 四邊形的右上 glVertex3f(-1.0f, 1.0f, -1.0f); / 四邊形的左上 glEnd();void display() glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);/ 清空顏色和深度緩存glMatrixMode(GL_MODELVIEW);glLoadIdentity();/gluLookAt(2.0, 2.0, 2.0, 0.0, 0.
16、0, 0.0, 0.0, 1.0, 0.0);gITra nslatef(0.0f+tx,0.0f+ty,-4.0f); 平移變換 glScalef(1+sf,1+sf,1+sf); /縮放變換gIRotatef(ratX, 1.0f, O.Of, O.Of);/繞 X 軸的旋轉變換glRotatef(ratY, O.Of, 1.0f, O.Of);/繞 Y 軸的旋轉變換glRotatef(ratZ, O.Of, O.Of, 1.0f);/繞 Z 軸的旋轉變換DrawBox();glFlush();glutSwapBuffers();void reshape(int w, int h) /重繪
17、回調函數, 在窗口首次創立或用戶改變 窗口尺寸時被調用glViewport(0, 0, w, h);/ 指定視口的位置和大小glMatrixMode(GL_PROJECTION);glLoadIdentity();/glFrustum(-1.0, 1.0, -1.0, 1.0, 3.1, 10.0);/gluPerspective(45,1,0.1,10.0);glOrtho(-2.0, 2.0, -2.0, 2.0, 2.0, 10.0);void init()glClearColor (1.0, 1.0, 1.0, 1.0);glEnable(GL_DEPTH_TEST); / 啟動深度測
18、試模式 void myKeyboard(unsigned char key, int x, int y)if(key = a | key = A)ratX += 2;ratY += 2;ratZ += 2;if(key = s | key = S) ratX -= 2; ratY -= 2; ratZ -= 2;if(key = j | key = J) sf+=0.1;if(key = k | key = K) sf-=0.1;if(key = c | key = C)exit(0);glutPostRedisplay(); /重新調用繪制函數void myspecialKeyboard(int key,in
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校規定資產管理制度
- 城鄉建設公司管理制度
- 醫藥公司藥妝管理制度
- DB62T 4330-2021 油菜品種 隴油16號
- DB62T 4415-2021 當歸栽培技術規程
- 聚會席位安排方案(3篇)
- 小區樓梯休整方案(3篇)
- 廠區供熱規劃方案(3篇)
- 城郊小院改造方案(3篇)
- 冷鏈試劑交貨方案(3篇)
- 2025年軍隊文職統一考試《專業科目》會計學試卷真題答案解析
- 2025-2030肺癌手術行業市場現狀供需分析及投資評估規劃分析研究報告
- 農村飲水安全工程可行性研究報告
- 人工智能與法律職業發展的潛在挑戰-洞察闡釋
- 2024-2025統編版一年級下冊道德與法治期末考試卷及參考答案
- 2025-2030年中國邊緣數據中心行業市場現狀調查及發展趨向研判報告
- 井岡山硒橙生產技術規程
- 四年級語文下冊期末分類復習日積月累與背誦
- 一級注冊建筑師真題含答案2025年
- 上海教育版數學八年級上冊《直角三角形》導學案
- 建設美麗中國課件
評論
0/150
提交評論