• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于分形的三維海面研究及生成

      2011-10-27 07:41:00莊建東曾勇進
      中國校外教育 2011年22期
      關鍵詞:方形海浪分形

      ◆莊建東 曾勇進

      (集美大學計算機工程學院計算機教研室)

      基于分形的三維海面研究及生成

      ◆莊建東 曾勇進

      (集美大學計算機工程學院計算機教研室)

      1 引言

      虛擬自然環(huán)境如地形、植物、海浪、云和火焰等的計算機模擬一直是計算機圖形學的重要研究課題之一,其中海浪的模擬相比其他自然環(huán)境的模擬更為復雜和困難。當前對于海浪模擬仿真的建模方法根據(jù)具體實現(xiàn)原理可分為:基于計算流體力學方法、基于海浪譜方法、基于幾何造型方法和基于分形幾何方法。

      基于計算流體力學的方法雖然能夠生成逼真的海浪運動效果,但是由于其求解過程過于復雜,在實際應用中一般很少使用?;诤@俗V方法只能模擬海浪的波動效果而不能模擬海浪的翻轉卷曲效果。基于幾何模型方法是根據(jù)海浪的形態(tài)特點,選擇幾何曲線或曲面構造連續(xù)變化的海浪形狀。基于分形幾何方法一般采用FBM方法,生成海浪的分形曲面將生成點的坐標設定為時間和空間相關的函數(shù),進而生成海浪效果,同時通過插值的方法保證圖像的連續(xù)性有,因而在實際得到廣泛應用。

      本文希望通過對海浪模擬仿真的建模方法的深入研究,以便能更好地了解和掌握如何通過計算機實現(xiàn)模擬自然界中的自然景觀技術打下基礎。

      2 靜態(tài)海浪生成的原理及算法

      分形幾何學的基本思想是:客觀事物具有自相似的層次結構,局部與整體在形態(tài)、功能、信息、時間、空間等方面具有統(tǒng)計意義上的相似性,成為自相似性。而懸浮微粒永不停息地做無規(guī)則運動的現(xiàn)象叫做布朗運動。分形理論最早是由美籍數(shù)學家曼德布羅特提出的,分形的重要特征之一就是自相似性,而海浪就可以看作是周期性的不同尺寸波形的疊加,這些不同尺寸的波形具有大尺度相關而小尺度相似的特征,且空間各向近似同性,即海浪具有自相似的特征,由這種自相似性可看出海浪具有分形特征?;谶@個特征,可以利用少量數(shù)據(jù)生成具有較強真實感和實時性的海浪波動效果。

      分形布朗運動(Fractional Brownian Motion)是由 B.Mandelbrot和、V.Ness于1968年針對隨機布朗運動的推廣,提出的一種統(tǒng)計自相似過程的數(shù)學模型,主要用于生成布朗運動過程。

      中點位移又叫做隨機中點位移法,是最簡單和經(jīng)典的方法,是對分形布朗運動的直接應用。一維隨機中點位移法的思想史:針對某一已知端點高程(或屬性)的線段,其線段中點的高程(或屬性)為其兩端點高程(或屬性)的平均值再加一隨機位移量,位移后的兩線段再進行上述中點細分并位移,遞歸直到滿足所需的分辨率為止。將其推廣到二維,依據(jù)表面構網(wǎng)方式的不同,其模擬可分為三角形邊線細分法、方形-方形細分法、菱形-方形法等方法,其實現(xiàn)思想與一維類似。本文采用的是菱形-方形法。

      2.1 菱形-方形法

      海浪分形曲面的生成使用FBM插值方法中的隨機中點位移算法.隨機中點位移算法一般包括三角形邊界法、方形法、菱形法、菱形-方形法等,下面介紹本文所采用的菱形-方形法.

      如圖1所示,首先從一個正方形的4個角點開始,這4個角點A、B、C、D分別具有不同的高度值hA、hB、hC、hD值,然后計算出中點O的高度值hO,再根據(jù)4個角點的位置計算出四邊形各邊中點位置,同時計算出各邊中點的高度值:

      這樣在第一次細分過程中可以由一個正方形生成4個正方形,如圖1所示。其中●為初始正方形角點,○為根據(jù)4個初始正方形角點生成的初始正方形中點,■為根據(jù)4個初始角點和生成的正方形中點計算出的正方形4邊中點,這樣就生成了4個新的正方形,同時計算各個點的高度值。以此類推,第二次細分可生成16個正方形,第三次則可生成64個,經(jīng)過i次細分生成的正方形為2(2i)個。

      由于生成各點高度不同,經(jīng)多次迭代后可生成一個近似曲面,這個曲面與真實海浪形狀比較接近,但是由于PC機硬件性能所限,迭代次數(shù)不能過多,以避免大量運算可能產(chǎn)生的計算錯誤。

      圖1 菱形-方形細分法

      2.2 基于分形的三維靜態(tài)海浪建模及實現(xiàn)算法

      2.2.1 分形海面繪制算法

      為了實現(xiàn)海浪運動效果,首先需要畫出靜態(tài)海浪曲面,沒分形前是1個正方形,第一次分形產(chǎn)生4個正方形,第二次細分可生成16個正方形,第三次則可生成64個,經(jīng)過i次細分生成的正方形為22i個。

      同樣由于PC機硬件性能所限,迭代次數(shù)不能過多,以避免大量運算可能產(chǎn)生的計算錯誤,本課題最多只采用8次迭代。如圖所示經(jīng)過8次分形迭代所生成的靜態(tài)海浪曲面效果圖。

      圖2 八次分形迭代的靜態(tài)海浪曲面效果圖

      基于FBM方法的曲面生成算法如下:

      (1)確定迭代初始正方形個數(shù)g及迭代次數(shù)n。

      (2)確定隨機函數(shù)方程g()=(rand()%(r-1)-r/d)。

      (3)初始迭代次數(shù)m=0,然后對初始正方形的4個角點分別賦予隨機高度值hA、hB、hC、hD,并將生成的坐標保存到坐標數(shù)組中。

      (4)令當前迭代次數(shù)m=m+1,計算當次迭代所生成的所有點的坐標值,并保存到坐標數(shù)組中。(5)重復第4步,直到當m=n-1時為最后一次迭代過程,結束迭代。(6)使用紋理映射方法將海浪源紋理映射到生成的曲面上,生成海浪分形圖形。

      3 運動海浪的生成的原理及算法

      海浪的運動特征很復雜,主要表現(xiàn)為形狀不規(guī)則,具有復雜性和隨機性。海浪的運動特征,可以概括為近似周期性的規(guī)則波形的疊加,即海浪的運動形態(tài)可以看作是由一系列具有不同頻率、波數(shù)、波高和傳播方向的規(guī)則波疊加而成,類似于簡單三維進行波,根據(jù)海浪的這種運動特征可以使用多個正弦或余弦波疊加來近似地表示海浪的運動形態(tài)。

      3.1 海浪運動的幾何模型

      基于分形方法生成的海面是靜態(tài)的,為了實現(xiàn)海浪運動的效果,需將構成海面點的高度值設為隨時間和空間變化的函數(shù),而海浪的運動形態(tài)可以看作是由一系列具有不同頻率、波數(shù)、波高和傳播方向的規(guī)則波疊加而成,類似于簡單三維進行波,它的單一波形分量形式為:

      也就是說,在t時刻的波面可以看成是具有不同波高和不同頻率的n個波的總和。下面介紹各個參數(shù)的確定方法。

      表1 風級、波浪高度和波動周期的仿真參數(shù)

      3.2 海浪運動模擬算法

      為了模擬海面的運動效果,須將分形海浪生成點的波高設為與時間相關的函數(shù),使其隨著時間變化產(chǎn)生運動效果,具體實現(xiàn)算法如下:

      在八級海浪的情況下,經(jīng)過第七次迭代其效果如圖3所示。

      圖3 八級海浪的第七次迭代效果圖

      3.4 提高海浪運動模擬效果的OpenGL方法

      3.4.1 紋理映射技術

      紋理映射是將一個紋理圖像映射到三維物體表面來模擬景物表面細節(jié)的方法,是真實感圖形生成的有效途徑。實時模擬海浪波動效果時,如果對所有質點都使用FBM方法生成進行模擬,那么當前的PC機性能無法同時保證模擬出的海浪效果的真實性和實時性。為此使用了具有四方連續(xù)性的海浪圖像作為紋理源貼到生成的每個正方形上。如圖4所示,這樣不僅可以有效地提高模擬效果的真實感,還能大大減少計算量,提高模擬的實時效果。

      圖4 紋理映射技術生成的三維海浪表面

      這里采用的方法是使用OpenGL中的gl_Teximage2D()和glEnable(GL_TEXTURE_2D)函數(shù)來實現(xiàn)紋理映射。

      3.4.2 源紋理拉伸技術

      在使用紋理映射時,由于源紋理圖像的大小是固定的,但是使用隨機中點位移算法的菱形方形細分法生成的分形海面時由多次迭代生成且大小不一的正方形構成,這些正方形大小與源紋理圖像大小不一定相同。這里使用了OpenGL中的glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN/MAG_FILTER,GL_LINEAR)函數(shù)解決了這個問題,如圖5所示,當源紋理圖像大于映射的正方形時使用MIN參數(shù),反之則使用MAG參數(shù)。

      圖5 源紋理拉伸技術生成的三維海浪表面

      3.4.3 雙緩沖技術

      雙緩沖區(qū)的窗口執(zhí)行繪圖命令實際上是在畫面以外建立一個場景,然后很快地交換到窗口視圖中。OpenGL中使用雙緩沖技術,使用函數(shù)glutSwapBuffers()交換緩沖區(qū),將圖形緩沖區(qū)內容交換到當前畫面顯示緩沖區(qū).圖形緩沖區(qū)和當前畫面緩沖區(qū)的顯示數(shù)據(jù)交替出現(xiàn),這種方式可以減少單一當前畫面緩沖區(qū)由于計算延遲產(chǎn)生的閃爍現(xiàn)象,能有效地提高模擬效果。

      3.4.4 OpenGL 顯示列表

      采用顯示列表方式繪圖一般要比瞬時方式快,尤其是顯示列表方式可以大量地提高網(wǎng)絡性能,即當通過網(wǎng)絡發(fā)出繪圖命令時,由于顯示列表駐留在服務器中,因而使網(wǎng)絡的負擔減輕到最小。另外,在單用戶的機器上,顯示列表同樣可以提高效率。因為一旦顯示列表被處理成適合于圖形硬件的格式,則不同的OpenGL實現(xiàn)對命令的優(yōu)化程度也不同。

      3.4.5 霧化效果

      霧化是一種模擬自然界中霧氣對場景物體視覺效果產(chǎn)生影響的圖形繪制技術。此技術從視點到物體逐漸將物體的繪制顏色淡化,直至背景色。通過霧化處理可較好的表現(xiàn)出物體到視點的距離感。雖然霧化的具體計算非常復雜,但在OpenGL中的使用相關函數(shù)進行處理卻非常簡單。

      3.5 海浪運動模擬的實現(xiàn)及結果分析

      通過采用點高度值替換的方法可以比較好的模擬現(xiàn)實中的海浪運動的效果,既把后一點的高度值替換前一點的高度值,這樣就可以實現(xiàn)海浪的向前推進和海浪具有波動的效果,達到了比較好的實現(xiàn)效果。

      4 結論

      本文理論主要源于分形幾何學,以分數(shù)布朗運動數(shù)學模型為基礎,進行分形三維海浪表面的建模和分形海浪運動仿真生成技術的研究和應用,通過對海浪的具體形態(tài)分析,得出了海浪的分形特征。根據(jù)FBM方法中的隨機中點位移算法,具體采用菱形—方形法,生成了海浪分形曲面。在分形海浪的建模過程中,采用二維高斯隨機插值算法,進行隨機分形海浪,實現(xiàn)海浪的分形。其次海浪的運動形態(tài)可以看作是由一系列具有不同頻率、波數(shù)、波高和傳播方向的規(guī)則波疊加而以分形理論為基礎,依據(jù)高度迭代方式,實現(xiàn)分形海浪的運動,并根據(jù)具體海浪運動特點,結合風力對海浪運動效果的影響,同時采用紋理映射技術、源紋理拉伸技術、雙緩沖技術、OpenGL顯示列表、霧化效果等OpenGL方法提高海浪模擬效果的真實性和實時性,以Visual C++為開發(fā)平臺,通過調用OpenGL的接口函數(shù)進行二次開發(fā),實現(xiàn)了對三維海浪運動的計算機模擬,較好地實現(xiàn)了海浪運動的效果。

      本課題雖然實現(xiàn)了三維真實感的海浪的場景構造,但是對于構建完備的三維浪花而言,僅僅是完成了該系統(tǒng)的基礎性建模和真實感科學算法的實現(xiàn)過程,這些工作為構建完備的三維浪花系統(tǒng)打下了堅實的基礎。在此基礎上,應該加大對自然海浪的特征的研究,采用多種數(shù)學模型,以求滿足構建各種自然海浪的需要。

      [1]曾文曲,王向陽.分形理論與分形的計算機模擬.沈陽:東北大學出版社,2001.1 -102.

      [2]黃心淵.虛擬現(xiàn)實技術與應用.北京:科學出版社,1999,7.

      [3]劉浩,戴居豐,楊磊等.虛擬現(xiàn)實技術及其應用研究.微計算機信息,2005,21(1):200 -201.

      [4]BAENSLEY M F.Fractal Everywhere[M].New York:Academic Press,1993.

      [5]吳斌,段海波,薛鳳武.OpenGL編程權威指南.中國電力出版社,2001,8.

      [6]孫博文.分型算法與程序設計——Visual C++實現(xiàn)[M].北京:科學出版社,2004.

      [7]BAENSLEY M F.Fractal Functions and Interpolation[J].Constructive Approximation ,1986,(2):203 -329.

      [8]王子凡,林宗堅.基于圖像表面積的分形布朗運動分數(shù)維算法研究[J].武漢大學學報,2005,30(2):161 -165

      [9]王琰,曾蘭玲.基于分形的三維竹子算法[J].中國圖像圖形學報,2007,12(1):177 -182.

      猜你喜歡
      方形海浪分形
      丫丫和小海浪
      幼兒園(2021年13期)2021-12-02 05:13:54
      海浪
      小讀者(2021年2期)2021-11-23 07:17:34
      方形料倉堵料解決方法
      冶金設備(2021年2期)2021-07-21 08:44:26
      捕捉方形泡泡
      方形夾具在線切割切槽的應用
      哈爾濱軸承(2021年4期)2021-03-08 01:00:48
      感受分形
      樊應舉
      書香兩岸(2020年3期)2020-06-29 12:33:45
      分形之美
      分形空間上廣義凸函數(shù)的新Simpson型不等式及應用
      變方形
      鲁甸县| 达尔| 富裕县| 额敏县| 东平县| 莆田市| 洛扎县| 安平县| 沾化县| 喜德县| 涿州市| 全椒县| 弥渡县| 安新县| 淮安市| 竹溪县| 杭锦旗| 龙井市| 安庆市| 新安县| 监利县| 辽宁省| 泗洪县| 定远县| 乌什县| 都兰县| 修文县| 旺苍县| 黎川县| 博兴县| 元江| 台中市| 中宁县| 大新县| 磐安县| 高阳县| 惠东县| 鹤岗市| 鲁山县| 马山县| 海淀区|