




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、程序設計挑戰(zhàn)式課程設計報告作業(yè)名稱:可愛的玩偶學 院:電子信息學院班 級:學 號:姓 名:團隊組成:西北工業(yè)大學2022年3月6日請?zhí)顚懸韵率梼?nèi)容,將表格按頁對齊(插入空行),勿刪除任何部分。1、問題與背景(描述程序所要解決的問題或應用背景)用C語言中的openGL庫設計卡通3D動態(tài)圖,可以應用于游戲等領域。2、開發(fā)工具(列出所使用的開發(fā)工具和第3方開發(fā)庫)Code:block16.013、主要功能(詳細說明程序的功能)通過C語言,設計一個卡通3D動態(tài)圖。運行時,可以得到動態(tài)的卡通圖形。4、設計內(nèi)容(詳細描述解決問題的原理和方法、算法、數(shù)據(jù)結(jié)構(gòu)等)1 主要數(shù)據(jù)結(jié)構(gòu)的設計程序中定義的主要數(shù)據(jù)類
2、型如下:const float ar glViewport glMatrixMode glLoadIdentity glFrustum glMatrixMode glLoadIdentity2、主要函數(shù)的實現(xiàn) 1) 繪制一個實心球,默認原點在屏幕中心與照相機重合 glPushMatrix(); glTranslated(0,0,-5); glRotated(90,1,0,0); glRotated(a,0,0,1); glutSolidSphere(1,slices,stacks);2)繪制一個實心圓錐體,默認原點在屏幕中心與照相機重合 glColor3d(1,1,0);3)繪制一個線框圓環(huán)
3、glPushMatrix(); glTranslated(0,0,-6); glRotated(60,0,1,0); glRotated(a,0,1,0); glutWireTorus(0.5,1.8,slices,stacks);/glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); glPopMatrix(); glutSwapBuffers();4)定義一個默認的光源的屬性值,使用數(shù)組來存放光源的顏色值const GLfloat light_ambient = 0.0f,
4、0.0f, 0.0f, 1.0f ;const GLfloat light_diffuse = 1.0f, 1.0f, 1.0f, 1.0f ;const GLfloat light_specular = 1.0f, 1.0f, 1.0f, 1.0f ;const GLfloat light_position = 2.0f, 5.0f, 5.0f, 0.0f ;5)定義材質(zhì)屬性值,使用數(shù)組來存放材質(zhì)的顏色值const GLfloat mat_ambient = 0.7f, 0.7f, 0.7f, 1.0f ; const GLfloat mat_diffuse = 0.8f, 0.8f, 0.
5、8f, 1.0f ; const GLfloat mat_specular = 1.0f, 1.0f, 1.0f, 1.0f ;const GLfloat high_shininess = 100.0f ;5、程序文件與工程名稱(標出程序中所有文件名、工程名稱及其說明)Sources主程序 卡通三維動態(tài)圖的程序6、函數(shù)模塊(程序中各個函數(shù)的原型聲明及其說明)static void display(void)glRotated 定義物體的旋轉(zhuǎn)glColor3d 定義物體的顏色glutSolidSphere 定義半徑與經(jīng)緯度static void key(unsigned char key, in
6、t x, int y) 鍵盤回調(diào)函數(shù)static void idle(void) 空閑回調(diào)函數(shù)7、使用說明(運行程序的小型說明書)點擊文件后即出現(xiàn)截圖所示的卡通三維動態(tài)圖。8、程序開發(fā)總結(jié)(簡要敘述編寫本作業(yè)的收獲與思考)通過本程序的編寫和開發(fā),進一步的提高了自己的基本編程能力,熟悉了C語言圖形模式下的編程,深入地理解了程序中有關函數(shù)等方面的知識。通過本程序的訓練,使我對C語言有了一個更能深刻的了解。通過這次程序開發(fā),我對程序員有了更深刻的認識。我意識到程序員不僅要有過人的思維,還要有足夠的耐心,以及合作的意識、獨立解決困難的意識。通過這次程序開發(fā),我學到了很多知識,遇到了一些問題,我明白了自
7、己有很多的不足,程序也有缺陷,但這本來就是一個不斷嘗試、不斷完善的過程,需要自己去不斷摸索、試驗,有了這次的體驗,以后我會在這條路上走的更遠。9、 運行截圖(附上程序運行的截圖畫面,至少有1幅,截圖越翔實得分越Windows中抓取當前活動窗口:Alt + Print Screen,抓取全屏:Print Screen?;蛘呤褂肏yperSnap等軟件(百度搜索)。10、源程序(附上程序源代碼,若是多個文件,標出文件名)#include stdio.h#ifdef _APPLE_#include #else#include #endif#include static int slices = 16
8、;static int stacks = 16;/* GLUT callback Handlers */static void resize(int width, int height) const float ar = (float) width / (float) height; glViewport(0, 0, width, height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-ar, ar, -1.0, 1.0, 2.0, 100.0); glMatrixMode(GL_MODELVIEW); glLoad
9、Identity() ;static void display(void)/該函數(shù)的內(nèi)容課改動 static double a =0;/定義a為每次旋轉(zhuǎn)的角度 a=a+0.15; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);/清除顏色緩沖區(qū)和深度緩沖區(qū) glColor3d(0,1,1);/畫圖的顏色為紅/繪制一個實心球,默認原點在屏幕中心與照相機重合 glPushMatrix(); glTranslated(0,0,-5); /x中為0,y值為0,z為-6,z值取負值才可以顯示 glRotated(90,1,0,0);/繞x軸轉(zhuǎn)動,角度
10、60,不動點原點 glRotated(a,0,0,1);/繞z軸旋轉(zhuǎn),每次調(diào)用display時角度a的值都增加了0.08,實現(xiàn)了旋轉(zhuǎn)。 glutSolidSphere(1,slices,stacks);/畫圓球半徑是1,經(jīng)度數(shù),緯度數(shù)分別為16 glPopMatrix(); glColor3d(1,1,0);/畫圖的顏色為藍綠色 glPushMatrix(); glTranslated(0.5,0.5,-3); /x中為0,y值為0,z為-6,z值取負值才可以顯示 glRotated(60,1,0,0);/繞x軸轉(zhuǎn)動,角度60,不動點原點 glRotated(a,0,0,1);/繞z軸旋轉(zhuǎn),每
11、次調(diào)用display時角度a的值都增加了0.08,實現(xiàn)了旋轉(zhuǎn)。 glutSolidSphere(0.15,slices,stacks);/畫圓球半徑是1,經(jīng)度數(shù),緯度數(shù)分別為16 glPopMatrix();/繪制一個實心圓錐體,默認原點在屏幕中心與照相機重合 glColor3d(1,1,0);/畫圖的顏色為藍綠色/繪制一個實心球,默認原點在屏幕中心與照相機重合 glPushMatrix(); glTranslated(-0.5,0.5,-3); /x中為0,y值為0,z為-6,z值取負值才可以顯示 glRotated(60,1,0,0);/繞x軸轉(zhuǎn)動,角度60,不動點原點 glRotated
12、(a,0,0,1);/繞z軸旋轉(zhuǎn),每次調(diào)用display時角度a的值都增加了0.08,實現(xiàn)了旋轉(zhuǎn)。 glutSolidSphere(0.15,slices,stacks);/畫圓球半徑是1,經(jīng)度數(shù),緯度數(shù)分別為16 glPopMatrix();/繪制一個實心圓錐體,默認原點在屏幕中心與照相機重合 glColor3d(1,1,0);/畫圖的顏色為紅藍色/繪制一個實心圓錐體,默認原點在屏幕中心與照相機重合 glPushMatrix(); glTranslated(0,0,-2.12);/相對照相機將對象向上移動1.6,向照相機前方移動6 glRotated(60,1,0,0);/繞x軸轉(zhuǎn)動,角度6
13、0 glRotated(a,0,0,0);/繞原點軸旋轉(zhuǎn), 角度a,不動點原點 glutSolidCone(0.3,0.3,slices,stacks);/glutSolidCone(GLdouble radius, GLdouble height, GLint slices, GLint stacks) glPopMatrix(); glColor3d(0,1,1);/畫圖的顏色為藍綠色/繪制一個線框圓環(huán) glPushMatrix(); glTranslated(0,0,-6); glRotated(60,0,1,0);/繞y軸轉(zhuǎn)動60度 glRotated(a,0,1,0);/繞y軸旋轉(zhuǎn),
14、 角度a,不動點原點 glutWireTorus(0.5,1.8,slices,stacks);/glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides, GLint rings); glPopMatrix(); glutSwapBuffers();static void key(unsigned char key, int x, int y)/鍵盤回調(diào)函數(shù) switch (key) case 27 :/Esc鍵的ASCII值為27 case q: exit(0); break; case +: slices+
15、; stacks+; break; case -: if (slices3 & stacks3) slices-; stacks-; break; glutPostRedisplay();/標記當前窗口需要重新繪制static void idle(void)/空閑回調(diào)函數(shù) glutPostRedisplay();/標記當前窗口需要重新繪制/定義一個默認的光源的屬性值,使用數(shù)組來存放光源的顏色值const GLfloat light_ambient = 0.0f, 0.0f, 0.0f, 1.0f ;/光源中環(huán)境光的顏色,黑色,第四個分量1.0表示不透明。const GLfloat light_
16、diffuse = 1.0f, 1.0f, 1.0f, 1.0f ;/光源中漫射光的顏色,白色const GLfloat light_specular = 1.0f, 1.0f, 1.0f, 1.0f ;/光源中鏡面反射光的顏色const GLfloat light_position = 2.0f, 5.0f, 5.0f, 0.0f ;/定向光源,指定了光源的方向/定義材質(zhì)屬性值,使用數(shù)組來存放材質(zhì)的顏色值const GLfloat mat_ambient = 0.7f, 0.7f, 0.7f, 1.0f ; /材質(zhì)的環(huán)境顏色const GLfloat mat_diffuse = 0.8f,
17、0.8f, 0.8f, 1.0f ; /材質(zhì)的漫射光顏色const GLfloat mat_specular = 1.0f, 1.0f, 1.0f, 1.0f ;/材質(zhì)鏡面反射光的顏色const GLfloat high_shininess = 100.0f ;/材質(zhì)的鏡面反射指數(shù)/* Program entry point */int main(int argc, char *argv) glutInit(&argc, argv); glutInitWindowSize(640,480);/窗口大小 glutInitWindowPosition(10,10);/窗口位置 glutInitDi
18、splayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);/ glutCreateWindow(GLUT Shapes); glutReshapeFunc(resize); glutDisplayFunc(display); glutKeyboardFunc(key); glutIdleFunc(idle); glClearColor(1,0,2,0);/參數(shù)可以在0、1改動 glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LESS); glEnable
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 財務人員招聘與培訓合同范本
- 彩鋼板集裝箱房定制與施工安裝合同
- 保險合同常年法律服務合同示范
- 彩鋼房臨時搭建及拆除作業(yè)合同范本
- 汽車贈與及受贈方權利義務界定協(xié)議范本
- 2024屆福建省廈門市杏南中學中考數(shù)學最后沖刺模擬試卷含解析
- 2024屆廣東省廣州市南村中學中考一模數(shù)學試題含解析
- 動物保護中心管理制度
- 勞務公司財經(jīng)管理制度
- 山東省青島市城陽區(qū)實驗高級中學2024-2025學年高二下學期6月質(zhì)量監(jiān)測數(shù)學試題
- 2025年高考作文全國二卷范文《贈君星火夢照我天地心》
- 2025屆湖北省武漢市求新聯(lián)盟聯(lián)考英語八下期末達標測試試題含答案
- 江蘇省南京市江寧區(qū)2023-2024學年三年級下學期數(shù)學期末檢測卷(含答案)
- 2025春季學期國開電大本科《公共部門人力資源管理》一平臺在線形考(形考任務1至4)試題及答案
- 2025屆河北省張家口市高三第三次模擬考試地理試題(原卷版+解析版)
- 2025-2030中國巖石紙行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 消防員心理減壓課件
- 2025年下半年廣西北海市紅十字會聘用工作人員1人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年天然云母項目市場調(diào)查研究報告
- 2025年家庭教育指導師資格考試試題及答案
- ISO27001:2022信息安全管理手冊+全套程序文件+表單
評論
0/150
提交評論