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

正文內(nèi)容

基于粒子系統(tǒng)的噴泉模擬_本科畢業(yè)論文(參考版)

2025-07-05 11:28本頁面
  

【正文】 增強(qiáng) 了 模擬效果的真實(shí)感與實(shí)時(shí)性。 其次,假設(shè)繪制時(shí)只考慮不規(guī)則模糊物體本身,即粒子系統(tǒng)中的各個(gè)粒子與虛擬環(huán)境中的其它規(guī) 則物體不會(huì)出現(xiàn)交錯(cuò)、融合與碰撞檢測(cè)計(jì)算,因此只對(duì)系統(tǒng)中的粒子進(jìn)行繪制。在以點(diǎn)光源形式繪制粒子時(shí),映射在任何像素上的光強(qiáng)和顏色都可以看成所有映射在該點(diǎn)的粒子的光強(qiáng)和顏色的簡(jiǎn)單疊加,從而避免了大量排序操作。由于粒子存在于三維空間中,每個(gè)粒子都帶有其自身的深度信息,在繪制時(shí)也要解決遮擋、陰影和部分透明物體重疊等繪制規(guī)則圖形體素要解決的問題,并且基于粒子系統(tǒng)的不規(guī)則物體可以與基于面片的規(guī)則物體存在于同一場(chǎng)景中。這些限制條件一般為超出顯示區(qū)域、顏色與背景色融合或粒子透明度已經(jīng)等于零 等。粒子生命周期的遞減可以按照每一幀來遞減,也可以按照物理時(shí)間來遞減。 P 為位置, V 為速度, A 為加速度,粒子的狀態(tài)變化可用公式 (22)、公式 (23)計(jì)算: V(t+△ t)=V(t)+A(t)△ t (22) P(t+△ t)=P(t)+V(t)△ t (23) 19 粒子的消亡 粒子產(chǎn)生后,經(jīng)過一定的時(shí)間間隔,由于某種原因從系統(tǒng)中被刪除的過程稱為粒子的消亡過程。為了模擬復(fù)雜環(huán)境中粒子的運(yùn)動(dòng),可以引入“場(chǎng)”的概念,如重力場(chǎng)、風(fēng)力場(chǎng)、電磁場(chǎng)等,通過控制這些場(chǎng)的參數(shù),就可以控制場(chǎng)中粒子的運(yùn)動(dòng)軌跡。 粒 子的運(yùn)動(dòng)狀態(tài) 粒子動(dòng)態(tài)描述了粒子在三維空間中的狀態(tài)變化過程,狀態(tài)變化包括粒子空間位置、速度、形態(tài)和顏色的改變。 4.生命屬性 新粒子生成時(shí)都被系統(tǒng)賦予了生命周期 (Lifetime),生命周期是用來計(jì)算粒子在系統(tǒng)中的存活時(shí)間,隨著時(shí)間的推移,不斷有粒子消亡同時(shí)不斷有新粒子生成,生命周期 (粒子壽命 )用粒子在系統(tǒng)中存活的幀數(shù)來表示。 圖 5 粒子的初始位置 3.運(yùn)動(dòng)屬性 運(yùn)動(dòng)屬性是指粒子的運(yùn)動(dòng)速度,粒子的初始運(yùn)動(dòng)速度由大小和方向兩部分組成: 公式( 21)如下 InitialVelocity=MeanVelocity+Rand()*VarVelocity ( 21) MeanVelocity 和 VarVelocity 分別表示粒子的平均速度和隨機(jī)速度變化范圍。粒子的初始位置由粒子的生成區(qū)域決定,分別由粒子在三維空間中的坐標(biāo) (x, y, z)確定粒子在空間的具體方位,由粒子的本地坐標(biāo)軸旋轉(zhuǎn)所得到的角度 (angX, angY, angZ)確定粒子在空間中的方向。 (3)粒子顏色:粒子的初始顏色由系統(tǒng)設(shè)定,粒子從生成到消亡的過程中,粒子顏色從初始顏色變成消亡顏色,體現(xiàn)了顏色分布的物理特性。 (2)粒子尺寸:粒子尺寸的大小是與粒子形狀同時(shí)被確定的,粒子尺寸越 大,生成的圖形真實(shí)感越差,但由于計(jì)算量減少,系統(tǒng)的實(shí)時(shí)性提高了; 相反 如果減小粒子的尺寸,則提高了圖像的分辨率,增強(qiáng)了真實(shí)感,但計(jì)算量也將同時(shí)增加,因此導(dǎo)致實(shí)時(shí)性下降。 1.外觀屬性 外觀屬性包括粒子的形狀、尺寸和顏色,它們共同決定了系統(tǒng)對(duì)不規(guī)則模糊物體模擬的逼真程度。這種方法可以避免使用大量的粒子來模擬屏幕上投影面積比較小的景物,避免計(jì)算機(jī)資源的浪費(fèi)。 第二種是物體面積衡量法。 粒子的產(chǎn)生通常由隨機(jī)函數(shù)來控制, 在 Reeves 的粒子系統(tǒng)中定義了兩種方法 [2]: 第一種是平均粒子數(shù)衡量法。 3.粒子的數(shù)量 粒子的數(shù)量是粒子系統(tǒng)的重要參數(shù),它關(guān)乎著粒子系統(tǒng)模擬效果的真實(shí)程度以及系統(tǒng)運(yùn)行的實(shí)時(shí)性。 2.粒子生成的空間 確定了粒子的生成時(shí)間后,要確定的是粒子生成的空間。 1.粒子生成的時(shí)間 通常粒子系統(tǒng)在初始化的時(shí)候就生成了一定數(shù)量的粒子,這部分粒子很大程度上決定了模糊物體的形態(tài)。生成粒子系統(tǒng)某瞬間畫面的基本步驟是: (1)生成新粒子加入到系統(tǒng)中 (2)賦予每一 個(gè)新粒子以一定的屬性 (3)刪除那些已經(jīng)超過其生存期的粒子 (4)根據(jù)粒子的動(dòng)態(tài)屬性對(duì)粒子進(jìn)行移動(dòng)和變換 (5)繪制并顯示由有生命的粒子組成的圖形 粒子系統(tǒng)的基本模型 粒子系統(tǒng)的基本模型包括粒子的生成,粒子屬性,粒子運(yùn)動(dòng)變化,粒子的消亡和粒子的繪制。粒子在存活期間始終是按一定的方式運(yùn)動(dòng)的。粒子系統(tǒng)中的每一個(gè)粒子都具有一定的生命周期,在一定的時(shí)間周期內(nèi),粒子經(jīng)歷新生、活動(dòng)和消亡三個(gè)基本生命歷程。系統(tǒng)中的每個(gè)粒子并不是抽象的,它們都具有一系列的屬性,比如質(zhì)量屬性、存在的空間位置屬性、外觀屬性 (如顏 色、亮度、形狀、尺寸等 )、運(yùn)動(dòng)屬性 (如速度、加速度等 )、生存屬性 (生命期 ),其中顏色、亮度等屬性隨著時(shí)間不斷地發(fā)生變化。這里包含兩個(gè)意思,一是粒子系統(tǒng)中各粒子不與場(chǎng)景中任何其它物體相交,二是粒子之間不存在相交關(guān)系,并且粒子是不可穿透的。粒子系統(tǒng)中,把運(yùn)動(dòng)的模糊物體看作由有限的具有確定屬性的流動(dòng)粒子所組成的集合,這些粒子以連續(xù)或離散的方式充滿它所處的空間,并處于不斷的運(yùn)動(dòng)狀態(tài),粒子在空間和時(shí)間上具有一定的分布。粒子在系統(tǒng)中要經(jīng)過“產(chǎn)生”、“運(yùn)動(dòng)”和“消亡”三個(gè)階段,在這三個(gè)階段中粒子的大小和形狀隨時(shí)間變化,其它性質(zhì)如粒子的透明度顏色和運(yùn)動(dòng)都將隨機(jī)變化,從而充分體現(xiàn)出不規(guī)則物體的動(dòng)態(tài)性和隨機(jī)性 。 粒 子系統(tǒng)的理論 粒子系統(tǒng)是不規(guī)則模糊物體建模及其圖像生成的一種方法,粒子系統(tǒng)的基本原理是采用大量的、具有一定生命和屬性的微小粒子圖元作為基本元素來繪制不規(guī)則的模糊物體對(duì)象.在粒子系統(tǒng)中,粒子圖元的形狀可以是小球、立方體、正四面體或其它的形體。再進(jìn)行光柵化、隱藏面剔除和光亮度計(jì)算,最后進(jìn)行顯示。在視點(diǎn)坐標(biāo)系中,進(jìn)行背面剔除、視域四棱錐裁剪。物體最初定義在自己的局部坐標(biāo)系中,經(jīng)過模型變換,它以一定的形狀、尺寸存在于場(chǎng)景坐標(biāo)系的某個(gè)位置。 用計(jì)算機(jī)生成三維形體圖形,是計(jì)算機(jī)圖形學(xué)的基本研究?jī)?nèi)容??偟膩碚f,造型技術(shù)、真實(shí)感圖形繪制技術(shù)與人機(jī)交互技術(shù)構(gòu)成了計(jì)算機(jī)圖形學(xué)的主要研究?jī)?nèi)容。 CView::OnDestroy()。 if (hrc) ::wglDeleteContext(hrc)。 hrc = ::wglGetCurrentContext()。 // 淡化 alpha 值 struct particle *next, *prev。 // 粒子的 X 和 Z 方向增加值 char type。 // 粒子運(yùn)動(dòng)的方向 float x, y, z。 // 粒子的生命期 15 float v。 float alpha, ttx, ttz。 struct particle *tempp。用于繪制噴泉。 void LoadTexture(char *fn, int t_num)。void MoveParticles()。 void vect_mult(struct point *A, struct point *B, struct point *C)。 void DrawFountain()。 glLoadIdentity()。 gluPerspective(45,ratio,1,1000)。 //在修改前重設(shè)坐標(biāo)系 glLoadIdentity()。 ASSERT(m_pDC != NULL)。 并 添加 WM_CREATE 消息處理函數(shù),然后在 OnCreate 函數(shù)中進(jìn)行調(diào)用: // TODO: Add your specialized creation code here Init()。 ②初始化創(chuàng)建 OpenGL RC: hrc = wglCreateContext(m_pDCGetSafeHdc())。 return FALSE。 } if (SetPixelFormat(m_pDCGetSafeHdc(), pixelformat, amp。pfd)) == 0 ) 14 { MessageBox(ChoosePixelFormat failed)。 int pixelformat。選擇 View|ClassWizard 菜單項(xiàng) ,打開MFC對(duì)話框,在 Add Class之中選擇 New,以便添加一個(gè)新類 COpenGL,且該類的基類選擇 generic CWnd;最后利用 MFC ClassWizard 為 COpenGL 類添加消息 WM_CREATE, WM_PAINT 的映射。 (3)將 , , , 拷貝到 Microsoft Visual Studio/VC98/Lib 目錄中。刪除對(duì)話框中的靜態(tài)文本,調(diào)整控件的位置; 2. 配置基于 OpenGL+ MFC 的開發(fā)環(huán)境 (1)將 , , , , 文件拷貝到操作系統(tǒng)WINNT/System32 目錄下。 基于 OpenGL+MFC 的三維模擬的編程環(huán)境配置 1.創(chuàng)建 MFC 項(xiàng)目 (1)創(chuàng)建項(xiàng)目文件。表 1 列出了 AppWizard 所生成的頭文件,表2 列出了了 AppWizard 所生成的實(shí)現(xiàn)文件及其對(duì)頭文件的包含關(guān)系。 構(gòu)成應(yīng)用程序的文件 通過上述分析,可知 AppWizard 產(chǎn)生的 MDI 框架程序的內(nèi)容,所定義和實(shí)現(xiàn)的類。如果是多文檔應(yīng)用程序,文檔模板使用 CMultiDocTemplae,主框架窗口從 CMdiFarmeWnd 派生,它包含工具條、狀態(tài)欄和文檔框架窗口。 構(gòu)成應(yīng)用程序的對(duì)象之間的關(guān)系 圖 3 應(yīng)用程序的對(duì)象之間的關(guān)系 用圖的形式可直觀地表示所涉及的 MFC 類的繼承或者派生關(guān)系,如圖所示意。 MDI 應(yīng)用程序使用多文檔模板類 CMultiDocTemplate; SDI 應(yīng)用程序使用單文檔模板類 CSingleDocTemplate。視和文檔聯(lián)系在一起,在文檔和用戶之間起中介作用,即視在屏幕上顯示文檔的內(nèi)容,并把用戶輸入轉(zhuǎn)換成對(duì)文檔的操作。視窗口通過文檔對(duì)象來訪問和更新數(shù)據(jù)。 ( 3)文檔邊框窗口 類 文檔邊框窗口類從 CMDIChildWnd 類派生, MDI 應(yīng)用程序使用文檔邊框窗口來包含視窗口。 如果要支持工具條、狀態(tài)欄,則派生的邊框窗口類還要添加 CToolBar 和 CStatusBar 類型的成員變量,以及在一個(gè) OnCreate 消息處理函數(shù)中初始化這兩個(gè)控制窗口?;诳蚣艿膽?yīng)用程序必須有且只有一個(gè)應(yīng)用程序?qū)ο?,它?fù)責(zé)應(yīng)用程序的初始化、運(yùn)行和結(jié)束。對(duì)這些類或者對(duì)象解釋如下。 圖 2 MDI 應(yīng)用程序的構(gòu)成 從 CWinApp、 CDocument、 CView、 CMDIFrameWnd、 CMDIChildWnd 類對(duì)應(yīng)地派生出 CTApp、 CTDoc、CTView、 CMainFrame、 CChildFrame 五個(gè)類,這五個(gè)類的實(shí)例分別是應(yīng)用程序?qū)ο蟆⑽臋n對(duì)象、視對(duì)象、主框架窗口對(duì)象和文檔邊框窗口對(duì)象。這些文件分四類:頭文件( .h),實(shí)現(xiàn)文件 (.cpp),資源文件 (.rc),模塊定義文件 (.def),等。實(shí)現(xiàn)這種功能的基礎(chǔ)是 C++對(duì)繼承的支持,對(duì)虛擬函數(shù)的支持,以及 MFC 實(shí)現(xiàn)的消息映射機(jī)制。 MFC 是 C++類庫,程序員就是通過使用、繼承和擴(kuò)展適當(dāng)?shù)念悂韺?shí)現(xiàn)特定的目的。 MFC 提供了一個(gè) Windows 應(yīng)用程序開發(fā)模式,對(duì)程序的控制主要是由 MFC 框架完成的,而且 MFC 10 也完成了大部分的功能,預(yù)定義或?qū)崿F(xiàn)了許多事件和消息處理,等等。 總之, MFC 封裝了 Win32 API, OLE API, ODBC API 等底層函數(shù)的功能,并提供更高一層的接口,簡(jiǎn)化了 Windows 編程。又如,為了實(shí)現(xiàn)對(duì) DLL 編程的支持和多線程編程的支持, MFC 內(nèi)部使用了特別的處理方法,使用模塊狀態(tài)、線程狀態(tài)等來管理一些重要信息。 為了支持對(duì)應(yīng)用程序概念的封裝, MFC 內(nèi)部必須作大量的工作。 這些模板都采用了以文檔 視為中心的思想,每一個(gè)模板都 包含一組特定的類。針對(duì)不同的應(yīng)用和目的,程序員采用不同的模板。 MFC的宏觀框架體系 如前所述, MFC 實(shí)現(xiàn)了對(duì)應(yīng)用程序概念的封裝,把類、類的繼承、動(dòng)態(tài)約束、類的關(guān)系和相互作用等封裝起來。 MFC 編程框架將在適當(dāng)?shù)臅r(shí)候、適當(dāng)?shù)牡胤絹碚{(diào)用程序的代碼。 這樣,通過虛擬函數(shù)和消息映射, MFC 類提供了豐富的編程接口。如果這些函數(shù)都設(shè)計(jì)成虛擬函數(shù),由于數(shù)量太多,實(shí)現(xiàn)起來不現(xiàn)實(shí)。但是作為一個(gè)編程框架,有一個(gè)問題必須解決:如果僅僅通過虛擬函數(shù)來支持動(dòng)態(tài)約束,必然導(dǎo)致虛擬函數(shù)表過于臃腫 ,消耗內(nèi)存,效率低下。 程序員將結(jié)合自己的實(shí)際,從適當(dāng)?shù)?MFC 類中派生出自己的類,實(shí)現(xiàn)特定的功能,達(dá)到自己的編程目的。 針對(duì)每種不同的對(duì)象, MFC 都設(shè)計(jì)了一組類 對(duì)這些對(duì)象進(jìn)行封裝,每一組類都有一個(gè)基類,從基類派生出眾多更具體的類。CCmdTarget 通過封裝一些屬性和方法,提供了消息處理的架構(gòu)。 CObject 實(shí)現(xiàn)了一些重要的特性,包括動(dòng)態(tài)類信息、動(dòng)態(tài)創(chuàng)建、對(duì)象序列化、對(duì)程序調(diào)試的支持,等等。這些類中,最重要的類是 CObject 和 CCmdTarget。 ( 4)對(duì) ODBC 功能的封裝 以少量的能提供與 ODBC 之間更高級(jí)接口的 C++類,封裝了 ODBC API 的大量的復(fù)雜的工作,提供了一種數(shù)據(jù)庫編程模式。 ( 3)對(duì) COM/OLE 特性的封裝 OLE 建立在 COM 模型之上,由于支持 OLE 的應(yīng)用程序必須實(shí)現(xiàn)一系列的接口( Interface),因而相當(dāng)
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1