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

正文內(nèi)容

基于opengl水波模擬_本科畢業(yè)論文-資料下載頁

2025-07-01 14:26本頁面

【導(dǎo)讀】系別:______計算機系_

  

【正文】 的正壓力,起到劃靜水(相對靜止) 的作用。 游泳時一切制造推動力的動作,都應(yīng)是加速的才能不使水的流動特性把動力轉(zhuǎn)移,從而獲得推動力。 描述流體運動的兩種方法之一:拉格朗日法是以研究單個流體質(zhì)點運動過程作為基礎(chǔ),綜合所有質(zhì)點的運動,構(gòu)成整個流體的運動。 以某一起始時刻每個質(zhì)點的坐標位置( a、 b、 c),作為該質(zhì)點的標志。任何時刻任意質(zhì)點在空間的位置 (x、 y、 z)都可以看成是( a、 b、 c)和 t 的函數(shù)拉格朗日法基本特點 : 追蹤流體質(zhì)點的運動優(yōu)點 : 可直接運用固體力學中質(zhì)點動力學進行分析微 積分中的拉格朗日定理(拉格朗日中值定理)設(shè)函數(shù) f(x)滿足條件:(1)在閉區(qū)間[ a, b]上連續(xù);(2)在開區(qū)間( a, b)可導(dǎo);則至少存在一點ε∈( a, b),使得 f(b) f(a) ba f(b)=f(a) + f(ε )39。(b a) 16 [證明 :把定理里面的 c換成 x在不定積分得原函數(shù) f(x)={[f(b)f(a)]/(ba)}助函數(shù) G(x)=f(x){f(b)f (a)]/(ba)}x 易 證 明 此 函 數(shù) 在 該 區(qū) 間 滿 足 條件 :1,G(a)=G(b)。(x)在 [a,b]連續(xù) 。(x)在 (a,b)可導(dǎo) .此即羅爾定理條件 ,由羅爾定理條件即證 ] 基本原理 建立區(qū)域采樣法水波數(shù)學模型 區(qū)域采樣時計算機圖形學中常用的方法,僅僅一片小區(qū)域的影響可以在保證效率的前提下得到較好的效果。水波區(qū)域采樣法原理:吧睡眠堪稱一個二維的坐標系,點( x, y)坐標值將受到其周圍區(qū)域的坐標影響,最簡單的情況是假設(shè)僅僅被( x1,yx) .(x1,y).(x1,y+1). (x,y+1). (x+1,y).(x+1,y1).(x+1,y+1)和 (x,y1)影響,基于這個假設(shè)推到計算水波 振幅的公式。記 F( x,y) 為 (x,y)坐標的水波振幅且有正負之分,( x,y) 坐標水波下一時刻的振幅 F~( x, y)將由當前時刻的 F( x, y) . f(x1,y1). F(x1,y) .f(x1,y+1).f(x,y+1).f(x+1,y). f(x+1,y1) f(x+1,y1) 決定,假設(shè)F(x1,y1).f(x1,y). f(x1,y+1) f(x,y+1) f(x+1,y) f(x+1,y1) f(x+1,y1)和 f(x,y1)對 f~(x,y)的影響相同則: F~(x,y)=a{f(x1,y1)+f(x1,y)+f(x1,y+1)+f(x,y+1)+f(x+1,y)+f(x+1,y1)+f(x+1,y+1)+f(x,y1)}/4f(x,y)次公式與以往水波公式相比,計算量大大減少,編程時,用一個 for循環(huán)就可以實現(xiàn)。 水波擴散分析及解決方法 每次鼠標點擊到水面上,都會引起水波上升,或者下降,水波的能量都會被分配到一個增大的區(qū)域,這就意味著水波的振幅將會逐漸遞減,編程時使用一個阻呢系數(shù)模擬這種變化,這個系數(shù)是一個振幅的百分比參數(shù),他使高振幅的水波迅 速衰減,而使低振幅的水波緩慢衰減,根據(jù)分析,取阻呢系數(shù)為 合適。在忽略鼠標不斷點擊水波使水波能量增加的影響(改影響在水波顯示技術(shù)中考慮)下,假設(shè)水波前后時刻總能量相等,編程時,不斷地變化,交換兩個緩沖區(qū)中的數(shù)據(jù),結(jié)合上面的公式,便可得到水波的編程原理。 17 第四章 基于 OpenGL 的水波模擬 系統(tǒng)設(shè)計 模擬水表面動畫的方法 大量的文獻對海洋表面仿真與動畫,無論是在計算機圖形學和 海洋學等領(lǐng)域都有討論 。 而且也已經(jīng)有很多種方法對其進行仿真 。 1 比如用 sin 函數(shù)來進行仿真,也就是運用了水波 的特性; 2 用傅立葉和里維斯變換描寫水波在計算機圖形學里的實現(xiàn), 這種方法伸縮性很好,不僅可用于以高品質(zhì)的水動畫錄像資料而且也可以用于實時性的仿真; 3 當然也用運用物理模型的方法,這種方法運用了一些理想狀態(tài),然后用圖形學的方法把它表示出來,典型的就是運用著名的流體方程 NavierStokes 方程,這個復(fù)雜的數(shù)學程序的有益之處是轉(zhuǎn)換高程和速度勢成為一個比較簡單動力學; 4 就是運用粒子系統(tǒng),這種方法的思路是將流體看作粒子集;以上四種方法是前人用的最多的,對于第一種,這種方法比較簡單而且也給出了實際的數(shù) 學模型,該模型對于硬件要求 比較低,模擬出來的結(jié)果也可以達到一般的要求;第二種方法可以模擬出很好的海面效果,但是這種方法對硬件的配置要求比較高,尤其是 GPU;第三種方法運用了著名的流體方程,但是轉(zhuǎn)化的情況其實是只是簡單的海洋高度場,包括上升時候的色散關(guān)系;第四種方法可以模擬浪花飛濺但是不能模擬水波 。 本文所采用的方法是第一種方法,也就是 sin 函數(shù),因為 sin 函數(shù)的數(shù)學模型比較簡單,連續(xù)性和可微性比較好,但是 sin函數(shù)非常光滑,而海水表面并不是光滑的,尤其是在浪尖和浪底的時候出現(xiàn)尖銳處,我們應(yīng)用一些方法解 決了這個問題,使得效果更佳 。 水波模擬的算法設(shè)計 要對某種自然現(xiàn)象進行模擬仿真,就必須對該現(xiàn)象的特性有很好的認識。比如對于本文所仿真的對象 水波,就要對水波的諸多特性如擴散性、衰減性、反射性以及水的折射等都要有所認識,并最終通過程序算法體現(xiàn)在程序中。這些關(guān)于波的特性屬于普通物理的研究范疇,因為在模擬時需要的是實時的渲染,而每秒種至少要渲染 15幀以上才能使水波得以平滑的顯示??紤]到普通微型計算機的運算速度,不能用乘、除法,更不可以使用正、余弦函數(shù)以精確的公式來構(gòu)造水波,我們只能通過使用簡單而高速的 加、減法的近似算法來實現(xiàn)??梢杂脙蓚€與水池圖象一樣大小的數(shù)組 buf1和 buf2來保存水面上每一個點(離散化的點,對應(yīng)于每一個像素)的前、后兩時刻的波幅數(shù)據(jù)。在無外力干擾時的穩(wěn)定狀態(tài)下水面是一個平面,水面各點的波幅都為 0。當有外力干擾,如向水池投一顆石子會使水面泛起層層的漣漪。我們不能被現(xiàn)象所誤導(dǎo),實際上并非水面上的點在向外擴散,而是仍停在原地上下移動,由于振動幅度的變化而引起視覺上的錯覺。而且水波上的任何一點在任何時候都是通過振幅的變化把能量以自己為圓心向四周擴散,我們可以近似認為一個點只會對相臨的前、后、 左、右四個點有影響。這樣我們就可以用歸納法來根據(jù)任一點在某時刻周圍四點的振幅來求出該點在下一時刻的震動幅度。假設(shè)表示該影響關(guān)系的公式為: A0’=a ( A1+A2+A3+A4) +bA0 (41) 其中 a、 b為待定系數(shù), A0’ 為 0點下一時刻的振幅, A0、 A A A A4均為為當前時刻的周圍各點振幅。在不考慮衰減的情況下波的能量守恒,即各點振幅之和守恒(能量通過振幅來體現(xiàn)),可以用 (42)表示: A0’+A1’+...+A n’ = A0+A1+...+An ( 42) 將 (41)代入 (42): ( 4a+b) A0+ ( 4a+b) A1+... ( 4a+b) An = A0+A1+...+An 18 化簡可得 4a+b=1, 取 a = 1/ b = 1可以滿足條件。而且除 2可以用運算速度很快的移位運算符 來進行。公式一代入系數(shù)可得到無阻尼狀態(tài)下的周圍四點對中心點的影響關(guān)系式: A0’= ( A1+A2+A3+A4) / 2 A0 推廣到水面任一點:下一時刻任意一點的波幅等 于與該點緊鄰的前、后、左、右四點的波幅之和的一半與該點在上一時刻的波幅之差。但水在實際中是存在阻尼的,水波會在擴散過程中逐漸衰減直至消失。所以還要對波幅數(shù)據(jù)進行衰減處理,讓每一個點在經(jīng)過一次運算后,波幅按一定的比例衰減,衰減率經(jīng)筆者的實驗,取 1/32 比較合適,同時它也可以通過移位運算很快的獲得。到此為止,已將水波的擴散和衰減等特型用數(shù)學模型表示了出來,下面是具體計算波幅數(shù)據(jù)的主要代碼: void Spread() { ?? for (int i=BACKWIDTH。 i { //能量的擴散 buf2[i] = ((buf1[i1]+buf1[i+1]+buf1[iBACKWIDTH]+buf1[i+BACKWIDTH])1) buf2[i]。 //能量的衰減 buf2[i] = buf2[i]5。 } //交換前后兩時刻的能量緩沖區(qū) short *ptmp =buf1。 buf1 = buf2。 buf2 = ptmp。 ?? } 雖然模擬了對波的傳播過程,但如不考慮水面起伏的水波引起的對光的折射也是不逼真的,也正是由于水面上部的光線反射,才使我們感覺到水波的起伏 。根據(jù)光學有關(guān)知識,我們所看到的水下的景物并非在觀察點的正下方,而是存在一定的偏移。偏移的程度同 19 水波的斜率,水的折射率和水的深度都有關(guān)系,出于對處理速度的考慮同樣也不能對其進行精確的模擬。只能做線性的近似處理。因為水面越傾斜,所看到的水下景物偏移量就越大,所以,我們可以近似的用水面上某點的前后、左右兩點的波幅之差來代表所看到水底景物的偏移量: void Render() { ?? int xoff, yoff。 int k = BACKWIDTH。 for (int i=1。 i { for (int j=0。 j { //計算偏移量 xoff = buf1[k1]buf1[k+1]。 yoff = buf1[kBACKWIDTH]buf1[k+BACKWIDTH]。 //判斷坐標是否在窗口范圍內(nèi) if ((i+yoff ) 0 ) {k++。 continue。} if ((i+yoff )BACKHEIGHT) {k++。 continue。} if ((j+xoff ) 0 ) {k++。 continue。} if ((j+xoff )BACKWIDTH ) {k++。 continue。} //計算出偏移象素和原始象素的內(nèi)存地址偏移量 int pos1, pos2。 pos1=*(i+yoff)+ depth*(j+xoff)。 pos2=*i+ depth*j。 //復(fù)制象素 for (int d=0。 d 20 Bitmap2[pos2++]=Bitmap1[pos1++]。 k++。 } } } 在無外力影響的情況下,是不會自發(fā)產(chǎn)生水波的,必須對水面施加某種激勵才能引起波源的擴散。而且擴散的速度與范圍也是同激勵的能量大小與受力范圍有關(guān)的,我們可以通過在程序中人為的修改振幅緩沖區(qū) buf,來模擬外界的激勵比如雨點入水等。可以在雨點落水的地點來一個負的 尖脈沖 ,即讓 buf[x,y]=n。經(jīng)過多次實驗, n 的范圍取值在( 32~128)之間比較合適。受力半徑的控制也好辦,只須以入水中心點為圓心,畫一個以雨點半徑為半徑的圓,讓這個圓里所有的點都來這么一個負的 尖脈沖 就可以了,顯然這里也是做的近似處理: void DropStone(int x,/*x 坐標 */ int y,/*y 坐標 */int stonesize,/*半徑 */int stoneweight/*能量 */) { ?? //判斷坐標是否在屏幕范圍內(nèi) if ((x+stonesize)BACKWIDTH || (y+stonesize)BACKHEIGHT||(xstonesize)0||(ystonesize)0) return。 ?? for (int posx=xstonesize。 posx for (int posy=ystonesize。 posy if ((posxx)*(posxx) + (posyy)*(posyy) stonesize*stonesize) buf1[BACKWIDTH*posy+posx] = stoneweight。 ?? } 雖然在前面的推導(dǎo)中多處采用了看似過分的非常近似的處理,但是完全不必擔心,事實證明,用這種方法,在速度和圖象上都可以獲得非常好的效果。下邊就是從其中截取的一幀畫面, 很逼真的再現(xiàn)了水波的產(chǎn)生過程。 21 這種用數(shù)據(jù)緩沖區(qū)對圖象進行處理的方法的最大的好處就是:程序運算和顯示的速度與水波的復(fù)雜程度是無關(guān)的,用類似的方法完全可以對其他一些物理、自然現(xiàn)象如煙霧、云彩、陽光等進行逼真的模擬。 擾動 本文采用對網(wǎng)格點上的高度場進行擾動的方法來模擬不確定外界因素 . 為了適應(yīng)動畫的需要 ,即保持前后兩幅圖之間的連續(xù)性 . 筆者認為相連的幾幅圖的擾動不應(yīng)該是獨立的 ,所加的擾動應(yīng)該是時間 t 的連續(xù)函數(shù) . 因此 , 將原來的對單幅圖進行擾動推廣為所加的擾動象粒子系統(tǒng)中的粒子一樣有自己的生存時間 ,在這段時間內(nèi) , 它由零慢慢增強 , 再慢慢減弱至零 . 為簡單起見 ,可采用線性函數(shù) . 這樣 ,擾動表示為 ( h3, t3 ) , h3 為擾動的大小 , t3 為生存時間 .具體的做法是
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1