版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、程序設(shè)計挑戰(zhàn)式課程設(shè)計報告作業(yè)名稱:觀察行星的運行學(xué) 院:教育實驗學(xué)院班 級:HC001505學(xué) 號:2015300074姓 名:祖陸晗團隊組成:祖陸晗西北工業(yè)大學(xué)2022年5月31日請?zhí)顚懸韵率梼?nèi)容,將表格按頁對齊(插入空行),勿刪除任何部分。1、問題與背景(描述程序所要解決的問題或應(yīng)用背景) 在物理課的學(xué)習(xí)中,當(dāng)涉及到天體物理學(xué)的知識時,往往需要直觀的觀察天體的運行來加深對知識的理解。本程序基于Windows界面編程下的OpenGL圖形函數(shù)庫,設(shè)計了一個Windows窗口程序,實現(xiàn)了OpenGL太陽系八大星系和月球運行軌跡的表現(xiàn)。2、開發(fā)工具(列出所使用的開發(fā)工具和第3方開發(fā)庫)Visu
2、al C+ 6.0OpenGL圖形函數(shù)庫3、主要功能(詳細(xì)說明程序的功能)用Windows窗口程序?qū)崿F(xiàn)OPENGL太陽系八大行星和月球運行軌跡的表現(xiàn)。4、設(shè)計內(nèi)容(詳細(xì)描述解決問題的原理和方法、算法、數(shù)據(jù)結(jié)構(gòu)等)一程序的整體結(jié)構(gòu) :1、在編程框架基礎(chǔ)上使用OpenGL,需要包含以下頭文件: #include <windows.h> / Windows頭文件 #include <glglu.h> / OpenGL實用頭文件2、OpenGL繪制場景的框架(1)頭文件 包含所有頭文件或鏈接庫文件 (2)全局定義 應(yīng)用實例、主窗口變量、數(shù)據(jù)結(jié)構(gòu)等全局定義,固定不變(3)窗口過程
3、 窗口過程函數(shù)的實現(xiàn),固定不變 (4)注冊窗口類 注冊窗口類函數(shù)的實現(xiàn),除非修改窗口屬性,一般不動 (5)初始化窗口 初始化窗口函數(shù)的實現(xiàn),除非修改窗口初始化值,一般不動(6)消息處理函數(shù)原型 給出所有消息處理函數(shù)的原型,增加/刪除消息處理時變動 (7)消息循環(huán) Windows應(yīng)用程序主消息循環(huán),一般不動(8)消息處理函數(shù)實現(xiàn) 在這編寫消息處理函數(shù) (9)主函數(shù) Windows應(yīng)用程序基本結(jié)構(gòu),一般不動 3. 在框架下,在Display函數(shù)中繪制圖形文字。二、 程序的流程 1、 根據(jù)用戶設(shè)置配置OpenGL的窗口 2、 創(chuàng)建OpenGL運行的窗口 3、 程序循環(huán),運行Display繪圖函數(shù),顯
4、示圖形4、 退出程序5、程序文件與工程名稱(標(biāo)出程序中所有文件名、工程名稱及其說明)文件夾:程序運行截圖.C:觀察行星的運行應(yīng)用程序:觀察行星的運行Word文件:觀察行星的運行程序報告6、函數(shù)模塊(程序中各個函數(shù)的原型聲明及其說明)一,首先定義一個數(shù)據(jù)結(jié)構(gòu),定義八大行星及月球的旋轉(zhuǎn)角度以及旋轉(zhuǎn)中心。static GLfloat xRot = 0.0f; static GLfloat yRot = 0.0f; static float fMoonRot=0.0f;static float fWaterRot=0.0f; static float fGoldRot=0.0f; static flo
5、at fEarthRot=0.0f; static float fFireRot=0.0f; static float fWoodRot=0.0f; static float fSoilRot=0.0f; static float fSkyRot=0.0f; static float fSeaRot=0.0f;二,定義顏色數(shù)組GLfloat whiteLight = 0.2f, 0.2f, 0.2f, 1.0f ;/白色光GLfloat lightPos = 0.0f, 0.0f, 0.0f, 1.0f ;三,設(shè)置窗口void ChangeSize(int w, int h) GLfloat
6、fAspect; / 防止被0所除 if(h = 0) h = 1; / 把視口設(shè)置為窗口大小 glViewport(0, 0, w, h); fAspect = (GLfloat)w/(GLfloat)h; /實際窗口的縱橫比 / 重置透視坐標(biāo)系統(tǒng) glMatrixMode(GL_PROJECTION); /還有一個參數(shù)是L_MODELVIEW glLoadIdentity(); / 產(chǎn)生透視投影 gluPerspective(60.0f, fAspect, 1.0, 4000);/重置模型視圖矩陣 glMatrixMode(GL_MODELVIEW); glLoadIdentity();四
7、,使用深度測試,給物體貼色以及設(shè)置環(huán)境光源,初始化。void SetupRC() 五,繪制星球并設(shè)置軌道。void RenderScene(void)六void TimerFunc(int value)七,主函數(shù)。int main(int argc, char *argv)7、使用說明(運行程序的小型說明書)運行程序后,即可看見不同顏色的八大行星繞著太陽以其各自的軌跡去轉(zhuǎn)動,同時還可以看見月球在繞著地球來轉(zhuǎn)動。行星的顏色分別對應(yīng)為:金黃-太陽靛藍(lán)-水星土黃-金星深藍(lán)-地球灰-月球磚紅-火星橙黃-木星草綠-土星淺藍(lán)-天王星藍(lán)-海王星8、程序開發(fā)總結(jié)(簡要敘述編寫本作業(yè)的收獲與思考)通過這次寫大作
8、業(yè),我發(fā)現(xiàn)辯證其實很有意思,學(xué)習(xí)編程的過程以及編程的過程就像是自己在創(chuàng)造一個世界,這極大的吸引了我的興趣,并且在信息化的時代,編程是一門十分重要的學(xué)科。同時隨著錯誤越來越少,直到程序成功運行,心里的滿足感也是越來越濃。我認(rèn)為以后計算機會是一種十分重要的工具,能夠掌握編程會對我們的邏輯思考能力有很大的提高,我希望以后在能夠繼續(xù)進行C語言的學(xué)習(xí),可以用它來創(chuàng)造更好的程序。9、運行截圖(附上程序運行的截圖畫面,至少有1幅,截圖越翔實得分越高)Windows中抓取當(dāng)前活動窗口:Alt + Print Screen,抓取全屏:Print Screen?;蛘呤褂肏yperSnap等軟件(百度搜索)。 1.
9、opengl運行界面:2.月球:10、源程序(附上程序源代碼,若是多個文件,標(biāo)出文件名)/*制作:西北工業(yè)大學(xué) 教育實驗學(xué)院 祖陸晗班級:HC001505學(xué)號:2015300074完成日期:2016.1.3*/#include <windows.h>#include <gl/glut.h>/ 旋轉(zhuǎn)角度 static GLfloat xRot = 0.0f; static GLfloat yRot = 0.0f; static float fMoonRot=0.0f;static float fWaterRot=0.0f; static float fGoldRot=0.
10、0f; static float fEarthRot=0.0f; static float fFireRot=0.0f; static float fWoodRot=0.0f; static float fSoilRot=0.0f; static float fSkyRot=0.0f; static float fSeaRot=0.0f;GLfloat whiteLight = 0.2f, 0.2f, 0.2f, 1.0f ;/白色光GLfloat lightPos = 0.0f, 0.0f, 0.0f, 1.0f ;/透視投影void ChangeSize(int w, int h) GLf
11、loat fAspect; if(h = 0) h = 1;/ 防止被0所除 glViewport(0, 0, w, h);/ 把視口設(shè)置為窗口大小 fAspect = (GLfloat)w/(GLfloat)h; /實際窗口的縱橫比 glMatrixMode(GL_PROJECTION); / 重置透視坐標(biāo)系統(tǒng) glLoadIdentity();/還有一個參數(shù)是L_MODELVIEW gluPerspective(60.0f, fAspect, 1.0, 4000);/ 產(chǎn)生透視投影 glMatrixMode(GL_MODELVIEW);/重置模型視圖矩陣 glLoadIdentity();
12、 void SetupRC() glEnable(GL_DEPTH_TEST);/ 啟用深度測試 glEnable(GL_COLOR_MATERIAL); /使用不同顏色來貼物體表面 glClearColor(0.0f, 0.0f, 0.0f, 1.0f ); /黑色背景 glEnable(GL_LIGHTING); glLightModelfv(GL_LIGHT_MODEL_AMBIENT,whiteLight); /使用whiteLight所指定的環(huán)境光 glLightfv(GL_LIGHT0,GL_POSITION,lightPos);/0號光源的位置 glEnable(GL_LIGHT
13、0);void SpecialKeys(int key, int x, int y)if(key = GLUT_KEY_UP)xRot-= 5.0f;if(key = GLUT_KEY_DOWN)xRot += 5.0f;if(key = GLUT_KEY_LEFT)yRot -= 5.0f;if(key = GLUT_KEY_RIGHT)yRot += 5.0f; xRot = (GLfloat)(const int)xRot % 360); yRot = (GLfloat)(const int)yRot % 360);glutPostRedisplay();void RenderScene
14、(void) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);/ 清除顏色和深度緩沖區(qū) glPushMatrix();glTranslatef(0.0f,0.0f,-300.0f);/把整個場景移動到視圖中g(shù)lColor3ub(0, 0, 200);/繪制水星glRotatef(fWaterRot, 0.0f, 1.0f, 0.0f);/繞y軸旋轉(zhuǎn)坐標(biāo)系統(tǒng),使水星圍著太陽轉(zhuǎn)glTranslatef(30.0f,0.0f,0.0f); /坐標(biāo)原點沿x軸移動30fWaterRot+=15.0f;if(fWaterRot>=365.0f)f
15、WaterRot=0.0f;glutSolidSphere(7.0f,15.0f,15.0f); glPopMatrix();glPushMatrix();/繪制金星glTranslatef(0.0f,0.0f,-300.0f);glColor3ub(255, 200, 0);glRotatef(fGoldRot,0.0f, 1.0f, 0.0f);/繞y軸旋轉(zhuǎn)坐標(biāo)系統(tǒng),使水星圍著太陽轉(zhuǎn)glTranslatef(60.0f,0.0f,0.0f); /坐標(biāo)原點沿x軸移動30fGoldRot+=10.0f;if(fGoldRot>=365.0f)fGoldRot=0.0f;glutSolid
16、Sphere(10.0f,100.0f,100.0f); glPopMatrix();glPushMatrix();/繪制火星glTranslatef(0.0f,0.0f,-300.0f);glColor3ub(255, 100, 0);glRotatef(fFireRot,0.0f, 1.0f, 0.0f);/繞y軸旋轉(zhuǎn)坐標(biāo)系統(tǒng),使水星圍著太陽轉(zhuǎn)glTranslatef(120.0f,0.0f,0.0f); /坐標(biāo)原點沿x軸移動30fFireRot+=5.0f;if(fFireRot>=365.0f)fFireRot=0.0f;glutSolidSphere(8.0f,15.0f,15
17、.0f); glPopMatrix();/繪制木星glPushMatrix();glTranslatef(0.0f,0.0f,-300.0f);glColor3ub(255, 150, 0);glRotatef(fWoodRot,0.0f, 1.0f, 0.0f);/繞y軸旋轉(zhuǎn)坐標(biāo)系統(tǒng),使水星圍著太陽轉(zhuǎn)glTranslatef(150.0f,0.0f,0.0f); /坐標(biāo)原點沿x軸移動30fWoodRot+=4.0f;if(fWoodRot>=365.0f)fWoodRot=0.0f;glutSolidSphere(15.0f,15.0f,15.0f); glPopMatrix();/繪
18、制土星glPushMatrix();glTranslatef(0.0f,0.0f,-300.0f);glColor3ub(200, 255, 0);glRotatef(fSoilRot,0.0f, 1.0f, 0.0f);/繞y軸旋轉(zhuǎn)坐標(biāo)系統(tǒng),使水星圍著太陽轉(zhuǎn)glTranslatef(180.0f,0.0f,0.0f); /坐標(biāo)原點沿x軸移動30fSoilRot+=3.0f;if(fSoilRot>=365.0f)fSoilRot=0.0f;glutSolidSphere(13.0f,15.0f,15.0f); glPopMatrix();/繪制天王星glPushMatrix();glT
19、ranslatef(0.0f,0.0f,-300.0f);glColor3ub(0, 200, 255);glRotatef(fSkyRot,0.0f, 1.0f, 0.0f);/繞y軸旋轉(zhuǎn)坐標(biāo)系統(tǒng),使水星圍著太陽轉(zhuǎn)glTranslatef(210.0f,0.0f,0.0f); /坐標(biāo)原點沿x軸移動30fSkyRot+=2.0f;if(fSkyRot>=365.0f)fSkyRot=0.0f;glutSolidSphere(12.0f,15.0f,15.0f); glPopMatrix();/繪制海王星glPushMatrix();glTranslatef(0.0f,0.0f,-300.
20、0f);glColor3ub(0, 100, 255);glRotatef(fSeaRot,0.0f, 1.0f, 0.0f);/繞y軸旋轉(zhuǎn)坐標(biāo)系統(tǒng),使水星圍著太陽轉(zhuǎn)glTranslatef(240.0f,0.0f,0.0f); /坐標(biāo)原點沿x軸移動30fSeaRot+=1.0f;if(fSeaRot>=365.0f)fSeaRot=0.0f;glutSolidSphere(13.0f,15.0f,15.0f); glPopMatrix(); glPushMatrix();/把整個場景移動到視圖中g(shù)lTranslatef(0.0f,0.0f,-300.0f);/設(shè)置材料顏色,太陽為黃色g
21、lColor3ub(255,255,0);glDisable(GL_LIGHTING);glutSolidSphere(20.0f,100.0f,100.0f);glEnable(GL_LIGHTING);glLightfv(GL_LIGHT0,GL_POSITION,lightPos);/繪制地球glColor3ub(0, 0, 255);glRotatef(fEarthRot, 0.0f, 1.0f, 0.0f);/繞y軸旋轉(zhuǎn)坐標(biāo)系統(tǒng),使地球圍著太陽轉(zhuǎn)glTranslatef(90.0f,0.0f,0.0f); /坐標(biāo)原點沿x軸移動105glutSolidSphere(12.0f,15.0f,15.0f);/ 根據(jù)基于地球的坐標(biāo)進行旋轉(zhuǎn),并繪制月球glColor3ub(200, 200, 200
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)一年級作文未來的房子(10篇)
- ?小學(xué)一年級課外閱讀小故事(二十篇)
- 小學(xué)數(shù)學(xué)六年級下冊3 1《圓柱》同步練習(xí)
- Tenuifolin-Standard-生命科學(xué)試劑-MCE
- Suksdorfin-生命科學(xué)試劑-MCE
- 2024-2025學(xué)年高中語文第四單元史傳人物12蘇武傳課時作業(yè)含解析新人教版必修4
- 天津市2024年高考地理壓軸卷含解析
- 2025屆高考英語3500詞匯基礎(chǔ)+提升練09含解析
- 2024-2025學(xué)年高中數(shù)學(xué)第二章平面向量單元素養(yǎng)評價含解析新人教A版必修4
- 2025版高中數(shù)學(xué)一輪復(fù)習(xí)課時作業(yè)梯級練三十八等差數(shù)列及其前n項和課時作業(yè)理含解析新人教A版
- 大班科學(xué)《球體和圓柱體》
- 2024土石壩安全監(jiān)測技術(shù)規(guī)范
- 【課件】2024屆高三英語高考前指導(dǎo)最后一課(放松心情)課件
- 食管癌圍手術(shù)期護理教學(xué)查房
- 2024年河南投資集團有限公司招聘筆試沖刺題(帶答案解析)
- 2024年院感安全注射培訓(xùn)
- 中國電信未來五年信息化發(fā)展規(guī)劃方案出臺
- 孩子分為四種:認(rèn)知型、模仿型、逆思型、開放型
- 小班故事《快樂的輪胎》課件
- 在線網(wǎng)課知慧《大涼山精準(zhǔn)脫貧(西昌學(xué)院)》單元測試考核答案
- 安全評價通則AQ8001-2007
評論
0/150
提交評論