freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于opengl水波模擬本科畢業(yè)論文(編輯修改稿)

2025-07-15 17:15 本頁面
 

【文章內(nèi)容簡介】 形的并行處理。(10)虛擬現(xiàn)實(shí)環(huán)境的生成及其控制算法等。圍繞著寫算法,多年來發(fā)表了很多論文,有些算法越來越完善,甚至實(shí)現(xiàn)了固化。然而有些算法還不是十分理想,可以進(jìn)行適當(dāng)?shù)男薷膩磉M(jìn)一步提高其效率。 MFC框架一.MFC概述 MFC是一個(gè)編程框架 MFC (Microsoft Foundation Class Library) 中的各種類結(jié)合起來構(gòu)成了一個(gè)應(yīng)用程序框架,它的目的就是讓程序員在此基礎(chǔ)上來建立Windows下的應(yīng)用程序,這是一種相對SDK來說更為簡單的方法。因?yàn)榭傮w上,MFC框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標(biāo)準(zhǔn)實(shí)現(xiàn)方法,程序員所要做的就是通過預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個(gè)輪廓。Microsoft Visual C++提供了相應(yīng)的工具來完成這個(gè)工作:AppWizard可以用來生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設(shè)計(jì)用戶接口;ClassWizard用來協(xié)助添加代碼到框架文件;最后,編譯,則通過類庫實(shí)現(xiàn)了應(yīng)用程序特定的邏輯。 封裝 構(gòu)成MFC框架的是MFC類庫。MFC類庫是C++類庫。這些類或者封裝了Win32應(yīng)用程序編程接口,或者封裝了應(yīng)用程序的概念,或者封裝了OLE特性,或者封裝了ODBC和DAO數(shù)據(jù)訪問的功能,等等,分述如下。 對Win32應(yīng)用程序編程接口的封裝 用一個(gè)C++ Object來包裝一個(gè)Windows Object。例如:class CWnd是一個(gè)C++ window object,它把Windows window(HWND)和Windows window有關(guān)的API函數(shù)封裝在C++ window object的成員函數(shù)內(nèi),后者的成員變量m_hWnd就是前者的窗口句柄。 對應(yīng)用程序概念的封裝 使用SDK編寫Windows應(yīng)用程序時(shí),總要定義窗口過程,登記Windows Class,創(chuàng)建窗口,等等。MFC把許多類似的處理封裝起來,替程序員完成這些工作。另外,MFC提出了以文檔視圖為中心的編程模式,MFC類庫封裝了對它的支持。文檔是用戶操作的數(shù)據(jù)對象,視圖是數(shù)據(jù)操作的窗口,用戶通過它處理、查看數(shù)據(jù)。 對COM/OLE特性的封裝 OLE建立在COM模型之上,由于支持OLE的應(yīng)用程序必須實(shí)現(xiàn)一系列的接口(Interface),因而相當(dāng)繁瑣。MFC的OLE類封裝了OLE API大量的復(fù)雜工作,這些類提供了實(shí)現(xiàn)OLE的更高級接口。 對ODBC功能的封裝 以少量的能提供與ODBC之間更高級接口的C++類,封裝了ODBC API的大量的復(fù)雜的工作,提供了一種數(shù)據(jù)庫編程模式。②從CWinApp、CDocument、CView、CMDIFrameWnd、CMDIChildWnd類對應(yīng)地派生出CTApp、CTDoc、CTView、CMainFrame、CChildFrame五個(gè)類,這五個(gè)類的實(shí)例分別是應(yīng)用程序?qū)ο蟆⑽臋n對象、視對象、主框架窗口對象和文檔邊框窗口對象。主框架窗口包含了視窗口、工具條和狀態(tài)欄。對這些類或者對象解釋如下。 (1)應(yīng)用程序 應(yīng)用程序類派生于CWinApp。基于框架的應(yīng)用程序必須有且只有一個(gè)應(yīng)用程序?qū)ο?,它?fù)責(zé)應(yīng)用程序的初始化、運(yùn)行和結(jié)束。 (2)邊框窗口 如果是SDI應(yīng)用程序,從CFrameWnd類派生邊框窗口類,邊框窗口的客戶子窗口(MDIClient)直接包含視窗口;如果是MDI應(yīng)用程序,從CMDIFrameWnd類派生邊框窗口類,邊框窗口的客戶子窗口(MDIClient)直接包含文檔邊框窗口。 如果要支持工具條、狀態(tài)欄,則派生的邊框窗口類還要添加CToolBar和CStatusBar類型的成員變量,以及在一個(gè)OnCreate消息處理函數(shù)中初始化這兩個(gè)控制窗口。 邊框窗口用來管理文檔邊框窗口、視窗口、工具條、菜單、加速鍵等,協(xié)調(diào)半模式狀態(tài)(如上下文的幫助(SHIFT+F1模式)和打印預(yù)覽)。 (3)文檔邊框窗口 文檔邊框窗口類從CMDIChildWnd類派生,MDI應(yīng)用程序使用文檔邊框窗口來包含視窗口。 (4)文檔 文檔類從CDocument類派生,用來管理數(shù)據(jù),數(shù)據(jù)的變化、存取都是通過文檔實(shí)現(xiàn)的。視窗口通過文檔對象來訪問和更新數(shù)據(jù)。 (5)視 視類從CView或它的派生類派生。視和文檔聯(lián)系在一起,在文檔和用戶之間起中介作用,即視在屏幕上顯示文檔的內(nèi)容,并把用戶輸入轉(zhuǎn)換成對文檔的操作。 (6)文檔模板 文檔模板類一般不需要派生。MDI應(yīng)用程序使用多文檔模板類CMultiDocTemplate;SDI應(yīng)用程序使用單文檔模板類CSingleDocTemplate。 應(yīng)用程序通過文檔模板類對象來管理上述對象(應(yīng)用程序?qū)ο蟆⑽臋n對象、主邊框窗口對象、文檔邊框窗口對象、視對象)的創(chuàng)建。+MFC的三維模擬的編程環(huán)境配置1.創(chuàng)建MFC項(xiàng)目①創(chuàng)建項(xiàng)目文件。選擇File|New菜單項(xiàng),新建一個(gè)基于對話框的項(xiàng)目文件MyDlgOpenGL;② 修改對話框模板。刪除對話框中的靜態(tài)文本,調(diào)整控件的位置;2. 配置基于OpenGL+MFC的開發(fā)環(huán)境 ①,。②,, Visual Studio/VC98/Include/GL目錄中中。③,, Visual Studio/VC98/Lib目錄中。④添加OpenGL開發(fā)庫文件到項(xiàng)目在編譯程序的時(shí)候選擇Project|Setting菜單,在Link標(biāo)簽中的Object/library modules編輯框中輸入“, ,”。⑤創(chuàng)建新類,添加消息映射。選擇View|ClassWizard菜單項(xiàng),打開MFC對話框,在Add Class之中選擇New,以便添加一個(gè)新類COpenGL,且該類的基類選擇generic CWnd;最后利用MFC ClassWizard為COpenGL類添加消息WM_CREATE,WM_PAINT的映射。3.初始化OpenGL①設(shè)置像素格式:為CMyTestView 類添加成員函數(shù) BOOL bSetupPixelFormat(void),用于與OpenGL 相關(guān)的設(shè)置 /*定 義 像 素 存 儲(chǔ) 格 式 */ PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), // pfd結(jié)構(gòu)的大小 1, // 版本號 PFD_DRAW_TO_WINDOW | // 支持在窗口中繪圖 PFD_SUPPORT_OPENGL | // 支持 OpenGL PFD_TYPE_RGBA, // RGBA 顏色模式 24, // 24 位顏色深度 0, 0, 0, 0, 0, 0, // 忽略顏色位 0, // 沒有非透明度緩存 0, // 忽略移位位 0, // 無累加緩存 0, 0, 0, 0, // 忽略累加位 32, // 32 位深度緩存 0, // 無模板緩存 0, // 無輔助緩存 PFD_MAIN_PLANE, // 主層 0, // 保留 0, 0, 0 // 忽略層 , 可見性和損毀掩模 }。 int pixelformat。 if ( (pixelformat = ChoosePixelFormat(m_pDCGetSafeHdc(), amp。pfd)) == 0 ) { MessageBox(ChoosePixelFormat failed)。 return FALSE。 } if (SetPixelFormat(m_pDCGetSafeHdc(), pixelformat, amp。pfd) == FALSE) { MessageBox(SetPixelFormat failed)。 return FALSE。 } return TRUE。 ②初始化創(chuàng)建OpenGL RC:hrc = wglCreateContext(m_pDCGetSafeHdc())。 wglMakeCurrent(m_pDCGetSafeHdc(), hrc)。 并 添加WM_CREATE 消息處理函數(shù),然后在 OnCreate函數(shù)中進(jìn)行調(diào)用: // TODO: Add your specialized creation code here Init()。 ③初始化的獲取dc:m_pDC = new CClientDC(this)。 ASSERT(m_pDC != NULL)。 ④設(shè)置OpenGL視錐體即投影變換矩陣glMatrixMode(GL_PROJECTION)。 //在修改前重設(shè)坐標(biāo)系 glLoadIdentity()。 ⑤設(shè)置視口變換:// Set the viewport視口 to be the entire window glViewport(0, 0, w, h)。 gluPerspective(45,ratio,1,1000)。⑥設(shè)置OpenGL模型變換glMatrixMode(GL_MODELVIEW)。 glLoadIdentity()。 4.實(shí)現(xiàn)應(yīng)用程序邏輯在本雨雪粒子系統(tǒng)中為CMyTestView 類添加了許多成員函數(shù):InvertWaveMap()函數(shù)來編程下雨效果;DrawWave()函數(shù)用來編程雨粒子下落時(shí)的水波屬性;LnitializeOpenGL()行數(shù)用來編程初始化openGL場景;OnSize()函數(shù)用來添加窗口縮放時(shí)的圖形變換函數(shù);OnTime()用來添加定時(shí)器響應(yīng)函數(shù)和場景更新函數(shù);Lnit()函數(shù)用來編程雪粒子屬性。5.清理工作:(析構(gòu)函數(shù)中釋放dc,rc指針)void CMyRainView::OnDestroy() {CView::OnDestroy()。// TODO: Add your message handler code here} 第三章 水波的計(jì)算機(jī)模擬原理和關(guān)鍵技術(shù)水波很容易被認(rèn)為是一種橫波,實(shí)際上并非如此。在平的情況下,水的表面是水平的。水面發(fā)生擾動(dòng)時(shí),使水面恢復(fù)水平的回復(fù)力有兩個(gè),一個(gè)是重力,另一個(gè)是表面張力。水波中,對水面質(zhì)點(diǎn)提供的回復(fù)力在波長很小時(shí),表面張力的作用是主要的,這種波叫做表面張力波。對于波長很長很長的波,表面張力的作用可以忽略,波動(dòng)主要是重力作用的結(jié)果,這種波叫做重力波。由于水的不可壓縮性,波峰中的水必然是從附近的波谷中流出來的。因此,水波中的每個(gè)質(zhì)點(diǎn)的運(yùn)動(dòng)都是由縱向運(yùn)動(dòng)和橫向運(yùn)動(dòng)合成的。 不同流體受溫度和壓力變化影響,其密度會(huì)有不同的改變,而水這種流體的變化則不明顯,水的壓縮性與澎漲性與空氣對比則很小。如在26℃和一個(gè)大氣壓的條件下,水的密度為996千克/米3,約為空氣的844倍,水每增加一個(gè)大氣壓時(shí)僅縮小1/20000,故在游泳條件下,“水”可視為難以壓縮的流體。 納維-斯托克斯方程: 牛頓第二定律在不可壓縮粘性流動(dòng)中的表達(dá)式。簡稱NS方程。此方程是法國力學(xué)家、。它的矢量形式為: (31)在直角坐標(biāo)中的分量形式為: (32) (33) (34) (35) (36) (37)式中ρ、ν、p、u、f分別為液體密度、運(yùn)動(dòng)粘性系數(shù)、動(dòng)水壓強(qiáng)、流速矢量、單位質(zhì)量的質(zhì)量力。墷為矢量微分算符;為拉普拉斯算符。為指定點(diǎn)處由于時(shí)間改變而引起的速度變化率,稱為當(dāng)?shù)丶铀俣龋?u墷)u 為指定瞬時(shí)由于空間位置改變而引起的速度變化率,稱為遷移加速度。與ν墷2u分別為作用于單位質(zhì)量液體表面的合壓力與合粘性力;(ux,uy,uz)及(fx,fy,fz)為u及f在直角坐標(biāo)中的投影。 在某些情況下,合粘性力很小,可忽略不計(jì),于是NS方程簡化為理想液體的歐拉方程。即: (38)對于需作流場分析的水力學(xué)問題,NS方程有特別重要的意義。它和三維連續(xù)性方程一道組成不可壓縮粘性流動(dòng)完整方程組,附加一定的初始條件和邊界條件,從理論上講,就可以解出流速分布和壓強(qiáng)分布。但NS方程是非線性的二階偏微分方程,僅在一些特定條件下,才能求出解析解。對于低雷諾數(shù)流動(dòng),可全部地或部分地略去慣性項(xiàng),求得蠕動(dòng)流近似解。對高雷諾數(shù)流動(dòng),在物體表面附近的邊界層內(nèi),必須考慮粘性影響,按邊界層方程求解;邊界層外,粘性效應(yīng)可以忽略,用歐拉方程近似求解。在很多情況下,特別是中等雷諾數(shù)的流動(dòng),可求出NS方程的數(shù)值解。大型電子計(jì)算機(jī)的應(yīng)用,為NS方程的數(shù)值解開辟了廣闊的前景。 流體均有不可忽視的粘滯力,它產(chǎn)生于分子間相互吸引作用,在流體力學(xué)中稱為“內(nèi)聚力”。粘滯性隨溫度升高而降低,水在26℃時(shí)為空氣的48倍(水=103牛頓秒/米,空氣=103牛頓秒/米),而在20℃時(shí)約為59倍。 水在靜止時(shí)各方向壓力平衡,
點(diǎn)擊復(fù)制文檔內(nèi)容
數(shù)學(xué)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1