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

正文內(nèi)容

基于粒子系統(tǒng)的噴泉模擬本科畢業(yè)論文-資料下載頁

2025-06-27 20:40本頁面
  

【正文】 400)/1002。 // 粒子方向 temppxd = cos((temppd*)/180)*temppv/4。 temppzd = sin((temppd*)/180)*temppv。 //粒子的x和z方向增加值 temppx += temppxd。 temppz += temppzd。 temppy = (*(temppt*temppt/4))/2+。 //計算粒子的高度 H = gt^2/2 系統(tǒng)的設(shè)計和實現(xiàn)根據(jù)粒子系統(tǒng)的工作原理,并設(shè)置了CmyFountainView、point、particle等相關(guān)粒子類。首先確定噴泉粒子的初始屬性,然后對粒子進行操作,將有生命的噴泉水滴粒子繪制在視口中即實現(xiàn)噴泉模型模擬。 噴泉粒子系統(tǒng)的邏輯視圖圖6是噴泉系統(tǒng)模型實現(xiàn)的工作流程。圖6噴泉系統(tǒng)模型實現(xiàn)的工作流程系統(tǒng)流程分析如下:(1)創(chuàng)建并初始化噴泉粒子;(2)初始化粒子的屬性;(3)通過更改粒子的位置坐標和噴射方向以及生命周期,根據(jù)運動模型的粒子速度變化公式改變運動速度,根據(jù)運動模型中的粒子位置變化公式改變粒子的其他屬性來發(fā)生變化;(4)判斷粒子是否消亡然后進行繪制粒子。圖7所示為粒子系統(tǒng)的CMyFountainView類圖 圖7 CMyFountainView類圖 噴泉粒子系統(tǒng)實現(xiàn)的關(guān)鍵代碼 噴泉粒子系統(tǒng)中粒子的初始速度設(shè)置為temppv = (float)(rand() % 200000)/100000+1。 生命設(shè)置為temppt = 。鏈表的操作為if (temppnext) temppnextprev = temp1。其噴泉粒子系統(tǒng)的關(guān)鍵代碼實現(xiàn)具體如下:void CMyFountainView::Init() //噴泉的初始化{ a=0。 fn[0] = NULL。 fn[1] = NULL。 fn[2] = NULL。 = 5。 = 5。 = 5。 = 200。 = 200。 = 200。 glGenTextures(3, texture)。 glClearColor(0, 0, 0, 0)。 glBlendFunc(GL_SRC_ALPHA, GL_ONE)。 glEnable(GL_BLEND)。 glEnable(GL_TEXTURE_2D)。 LoadTexture(, 0)。 LoadTexture(, 1)。 LoadTexture(, 2)。}BOOL CMyFountainView::RenderScene() //粒子繪制{ glClear(GL_COLOR_BUFFER_BIT)。 glLoadIdentity()。 glBindTexture(GL_TEXTURE_2D, texture[1])。 a += 。 gluLookAt(, , , 0, 0, 0, , , )。 // 繪制地面 glPushMatrix()。 glRotatef(a, 0, 1, 0)。 glBegin(GL_QUADS)。 glTexCoord2f(0, 0)。 glVertex3f(100, 0, 100)。 glTexCoord2f(2, 0)。 glVertex3f(100, 0, 100)。 glTexCoord2f(2, 2)。 glVertex3f(100, 0, 100)。 glTexCoord2f(0, 2)。 glVertex3f(100, 0, 100)。 glEnd()。 glPopMatrix()。 DrawFountain()。//繪制粒子系統(tǒng) glBindTexture(GL_TEXTURE_2D, texture[2])。 glPushMatrix()。 glRotatef(a, 0, 1, 0)。 glBegin(GL_QUADS)。 glTexCoord2f(0, 0)。 glVertex3f(100, 0, 100)。 glTexCoord2f(1, 0)。 glVertex3f(100, 0, 100)。 glTexCoord2f(1, 1)。 glVertex3f(100, 0, 100)。 glTexCoord2f(0, 1)。 glVertex3f(100, 0, 100)。 glEnd()。 glPopMatrix()。 glFlush()。 ::SwapBuffers(m_pDCGetSafeHdc())。 //交互緩沖區(qū) return TRUE。}// 添加新的粒子void CMyFountainView::AddParticles(){ struct particle *tempp。 int i, j。 for (j=0。 j3。 j++) for (i=0。 i2。 i++) { tempp = (struct particle *)malloc(sizeof(struct particle))。 if (fn[j]) fn[j]prev = tempp。 temppnext = fn[j]。 fn[j] = tempp。 temppt = 。 temppv = (float)(rand() % 200000)/100000+1。 // 粒子速度 temppd = (float)(rand() % 400)/1002。 // 粒子方向 // 開始位置的坐標 temppx = 8。 temppy = 0。 temppz = 0。//粒子的點發(fā)射實現(xiàn) temppxd = cos((temppd*)/180)*temppv/4。 temppzd = sin((temppd*)/180)*temppv。 tempptype = 0。 // 粒子狀態(tài)為運動 temppa = 1。 // 粒子淡化 }}// 粒子運動函數(shù)void CMyFountainView::MoveParticles(){ struct particle *tempp。 int j。 for (j=0。 j3。 j++) { tempp = fn[j]。 while (tempp) { if (tempptype == 0) // 如果粒子處于運動狀態(tài) { temppx += temppxd。 temppz += temppzd。 temppy = (*(temppt*temppt/4))/2+。 // 計算粒子的高度 H = gt^2/2 temppt += 。 // 增加粒子壽命 if (temppy 0) tempptype = 1。 // 如果粒子位于地面 }else // 粒子位于地面 { temppy = (*(temppt*temppt/4))/2+。 temppa = 。 // 粒子淡化 } tempp = temppnext。 // 下一個粒子 } }}//刪除粒子void CMyFountainView::DeleteParticles(){ struct particle *tempp, *temp1。 int j。 for (j=0。 j3。 j++) { tempp = fn[j]。 while (tempp) { if ((tempptype == 1) amp。amp。 (temppa = 0)) // 粒子死亡 { // 刪除粒子 temp1 = temppprev。 temppprevnext = temppnext。 if (temppnext) temppnextprev = temp1。 free(tempp)。 tempp = temp1。 } tempp = temppnext。 } }}void CMyFountainView::DrawFountain(){ int j。 struct particle *tempp。 struct point vectd, vectl。 float alpha, ttx, ttz。 glBindTexture(GL_TEXTURE_2D, texture[0])。 AddParticles()。 MoveParticles()。 DeleteParticles()。 glPushMatrix()。 for (j=0。 j3。 j++) { glBegin(GL_QUADS)。 tempp = fn[j]。 while (tempp) { // 旋轉(zhuǎn)噴泉 alpha = ((j*120+a)*PI)/180。 ttx = temppx*cos(alpha)temppz*sin(alpha)。 ttz = temppx*sin(alpha)+temppz*cos(alpha)。 // 計算方向矢量 = ttx 。 = temppy 。 = ttz 。 vect_mult(amp。vectd, amp。upv, amp。vectl)。 normalize(amp。vectl)。 *= 5。 *= 5。 *= 5。 //粒子的屬性更新 glColor4f(, , 1, temppa)。 // 繪制多邊形和粒子紋理映射 glTexCoord2f(0, 0)。 glVertex3f((), (tempp), ())。 glTexCoord2f(1, 0)。 glVertex3f((ttx+), (tempp), (ttz+))。 glTexCoord2f(1, 1)。 glVertex3f((ttx+), (temppy+), (ttz+))。 glTexCoord2f(0, 1)。 glVertex3f((), (temppy+), ())。 tempp = temppnext。 // 繪制下一個粒子列表 } glEnd()。 } glPopMatrix()。} 模擬結(jié)果噴泉模擬系統(tǒng)是在普通 PC機 ( AMD Athlon 64 4000+處理器, Nvidia GeForce 7300顯卡,1024M內(nèi)存)上利用標準OpenGL圖形庫實現(xiàn)的,效果良好。如圖(8)(9)(10) (11)所示為噴泉系統(tǒng)模型形成過程的截圖。 圖(8):噴泉系統(tǒng)模型形成過程截圖 圖(9):噴泉系統(tǒng)模型形成過程截圖 圖(10):噴泉系統(tǒng)模型形成過程截圖 圖(11):噴泉系統(tǒng)模型形成過程截圖 5 結(jié)論與展望 全文總結(jié)仿真系統(tǒng)采用Visual C++6.0和OpenGL的結(jié)構(gòu)。基于粒子系統(tǒng)的不規(guī)則物體模擬與視景效果模擬是一項復雜的課題。本文所實現(xiàn)的噴泉模型模擬是從系統(tǒng)簡單性、實時性、靈活性、模擬逼真程度出發(fā)提出的一種實現(xiàn)方法。該方法取得了一定效果,在調(diào)整噴泉水柱數(shù)量、初始速度可以觀察到噴泉水流運動 的變化。在以后的工作中,還可以進一步考慮噴泉水滴落回水面與障礙物碰撞的效果,在真實感光照的條件下等建立模型,實現(xiàn)更加逼真的模擬效果。本文具體工作有以下內(nèi)容:(1)學習和研究相關(guān)的理論基礎(chǔ),著重研究粒子系統(tǒng)的基本理論。(2)學習和研究現(xiàn)有的噴泉模型和數(shù)據(jù),總結(jié)分析。(3)在現(xiàn)有模型和數(shù)據(jù)的基礎(chǔ)上,建模。(4)分析、編碼與設(shè)計。最后本文采用Visual C++6.0和0penGL圖形庫編程實現(xiàn)了本文算法,構(gòu)建了一個演示系統(tǒng),同時該系統(tǒng)還具有良好的可擴展性。 進一步展望實際操作上對于自然景物的模擬中,加入的條件和因素越詳盡,仿真效果就越逼真。就現(xiàn)有的噴泉的仿真程度來看,現(xiàn)有噴泉粒子系統(tǒng)的模型還有很大的可改進的空間,粒子的運動過程會受到各種因素的綜合影響。在目前的噴泉粒子系統(tǒng)中,大多是實現(xiàn)了粒子的自由運動,或是考慮重力因素的影響描述粒子的運動,對于粒子的渲染程度和運動細節(jié)描述不足。實際噴泉粒子運動過程中存在了大量可以細化考慮的因素,比如噴泉在落到水面上會產(chǎn)生水花,噴泉在發(fā)射口壓力發(fā)生變化時可以產(chǎn)生不同形狀和大小的噴泉水柱等等。因此可以考慮將現(xiàn)實噴泉的多種仿真細節(jié)和實現(xiàn)因素添加到噴泉粒子的模擬系統(tǒng)中去,以使得對于噴泉的虛擬更加逼真。 隨著計算機圖形學理論的不斷完善和虛擬現(xiàn)實技術(shù)的發(fā)展, 基于粒子系統(tǒng)模擬不規(guī)則自然物體技術(shù)也越來越成熟,我們將繼續(xù)加強對于計算機圖形學的有關(guān)知識學習,進行系統(tǒng)而深入的研究和關(guān)注。通過對本文研究工作的歸納和總結(jié),基于粒子系統(tǒng)技術(shù)的噴泉模擬具有一定的真實性,但還需進一步完善:1.現(xiàn)實中的噴泉在風力的影響和太陽光的照射下會呈現(xiàn)出霧化和彩虹的效果,在今后的模擬中加入風力和光照模型后要對噴泉進行水霧和彩虹效果的模擬。2.改進噴泉粒子的水珠模型。噴泉是由一個個運動的噴泉水珠粒子構(gòu)成的,在今后隨著計算機硬
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1