宋巨龍,孫淑娥,林椹尠
摘 要:針對目前分形植物模擬多以平面形式給出的問題,采用粒子迭代的方法,利用OpenGL的優(yōu)良性能,給出一種三維分形植物模擬的構(gòu)造原理及實際算法,并根據(jù)該算法給出幾個植物的分形模擬結(jié)果。該結(jié)果表明,根據(jù)所給算法可以得到相當逼真的植物全貌和葉。這種三維真實植物的模擬在目前已有的文獻中尚不多見。所得結(jié)果對模擬三維場景有一定的實用價值。
關(guān)鍵詞:分形;圖形學(xué);植物模擬;算法
中圖分類號:TP391;TN911.73 文獻標識碼:A 文章編號:1004-373X(2009)12-059-02
Fractal Simulation of Plant Based on OpenGL
SONG Julong1,SUN Shu′e1,LIN Zhenxian2
(1.School of Science,Xi′an Shiyou University,Xi′an,710065,China;2.College of Science,Xi′an Institute of Post Telecommunication,Xi′an,710061,China)
Abstract:Aimming at the problem that almost all of present fractal simulation of plant is planar.Adopting the method of article iterative and excellent capability of OpenGL,the principle of structuring a fractal plant with its algorithm is given.And according to the algorithm,several results of plant simulation are given.The illustrations show that quite true whole tree and leaf can be obtained according to the algorithm.Such three dimensional true plant simulation is seldom seen in available literature.The results have a certain practical value in simulation of three dimensional scene.
Keywords:fractal;graphics;plant simulation;algorithm
0 引 言
近些年來,分形作為一門藝術(shù)已逐漸成了人們研究的一個新熱點。事實上,早在19世紀末、20世紀初,人們已經(jīng)注意到所謂“病態(tài)”函數(shù)的圖形。諸如馮?科赫(Von Koch)曲線、皮亞諾(Peano)曲線以及Sierpinskin墊片等。盡管當時人們關(guān)心的只是這些函數(shù)的數(shù)學(xué)性質(zhì),但無疑它們特殊而優(yōu)美的圖形也給人們留下了深刻的印象。至20世紀70年代,法裔美國數(shù)學(xué)家曼德爾布羅特(B.B.Mandelbrot)于1975年正式提出分形的概念,分形才真正成為人們研究的新熱點。
經(jīng)歷了近百年的漫長歲月,分形才最終形成一門科學(xué)。在眾多關(guān)于分形應(yīng)用的研究中,分形在圖形學(xué)中的應(yīng)用是重要的一支。除了Mandelbrot本人在這方面做的工作以外,Clifford Pickover,M.F.Barnsley等人對這一分支的發(fā)展也做出了杰出的貢獻。在我國也有不少學(xué)者在近年來對分形的圖像模擬應(yīng)用進行了諸多研究[1-4],在這些學(xué)者的研究中,大多都局限在對分形植物的構(gòu)造方法上,所得到的圖形也都是二維的。盡管他們也提出了各種不同的分形圖案生成方法[5-8],并得到了許多漂亮的圖案[8,9],但逼真的程度還是不足,也有人嘗試做三維空間的模擬[9],但所得結(jié)果并不理想。當然分形也有許多其他方面的應(yīng)用[10],這里就分形的植物模擬進行探討。
在分形圖形的研究方面,分形樹的構(gòu)造是人們關(guān)注的一個熱點。關(guān)于這一方面的研究,人們主要關(guān)心的是2個方面的問題:如何構(gòu)造出更加逼真的樹;如何使樹的生成速度更加快捷。這兩點目前解決得還不是很理想,這里充分利用當今計算機高度發(fā)達的優(yōu)勢,特別是OpenGL這一良好的建模工具,建立了幾個比以往更加逼真的植物模型,給出了二維和三維的例子。其主要特點在于:具有幾乎可以亂真的視覺效果,給人以強烈的真實感;是真正的三維圖形而不是用二維圖像來造成視覺上的三維效果。這里所得結(jié)果對真實場景的圖像模擬具有一定的實用價值;對裝幀、裝飾藝術(shù)也有一定的使用價值。另外,對計算機藝術(shù)工作者及印刷、紡織等領(lǐng)域的圖案設(shè)計者都具有一定的參考價值。
1 建模原理
樹或其他類似于樹的植物都具有分形的最主要特性——自相似性。這一點正是分形獨有的特點。所以利用分形來建立植物模型,具有得天獨厚的自然優(yōu)勢。
首先,給定一個作為樹干的線段(在二維情形中)或圓柱(在三維情形中),以確定其長度和位置;然后,將其復(fù)制,再沿其生長方向平移到某一點,即樹的分叉點,將其按一定比例收縮后,繞該點向右旋轉(zhuǎn)一定的角度。同樣,將樹干再次復(fù)制后沿生長方向向上平移到另外一個分叉點,將其按一定比例收縮后再繞該點向左旋轉(zhuǎn)一定的角度;如此反復(fù),根據(jù)需要決定樹的總的大枝。平移的次數(shù)取決于樹究竟需要幾個分枝。平移后的落點就是樹的分叉位置。對于三維情形,在旋轉(zhuǎn)的時候不僅要向左右旋轉(zhuǎn),而且需要向前后旋轉(zhuǎn)一定的角度,這樣才能真正產(chǎn)生三維的圖形。當完成平移之后,再將每個收縮并旋轉(zhuǎn)之后的線段或圓柱作為新的樹干,再重復(fù)前面的過程。如此循環(huán)下去,重復(fù)給定的次數(shù)之后,一棵樹就構(gòu)成了。對于樹的形狀也可以加以控制。比如,可以通過調(diào)整伸縮比例決定樹的高度;調(diào)整平移的位置決定樹冠的高度;調(diào)整旋轉(zhuǎn)的角度決定每個分枝向外伸出的角度等。如果為了使所得圖形更加逼真,還可以將上述參數(shù)取為某一范圍之內(nèi)的隨機數(shù)。
用上述方法得到的樹干和所有的樹枝都是直的,如圖1所示,因此不夠逼真。為此,可在每次進行分枝的時候,在保持節(jié)點不動的情況下,用B樣條曲線來替代直線,這樣就可以得到所給出的例圖的非常逼真的效果。圖2和圖3 就是采用這種方法構(gòu)造的,具有非常逼真效果的例圖。對于三維的情形,可以用拉伸的方法,將一個平面上的小小的圓,沿B樣條曲線進行拉伸,得到三維效果且具有一定直徑的不規(guī)則柱狀樹干或枝條,也可以用三維點來模擬三維空間中有一定直徑的樹干和枝條。圖4和圖5就是采用這種方法形成的。
圖1 二維樹的結(jié)構(gòu)
圖2 由例1的方法得到的樹
2 算 法
下面是一般二維樹的生成算法:
步驟1:給定一個主干,再給定一個樹的級N,令n:=1;
步驟2:在主干上分別取點A,B,C及頂點D,并將A,B,C各點的水平坐標做一個微小的隨機偏移;
步驟3:將主干分別平移到A,B,C,D各點,然后分別收縮為原來主干的r(小于1)倍,并向左或向右旋轉(zhuǎn)α,β,γ,φ,ψ角度,如圖1所示;
步驟4:做過主干端點及A,B,C各點的B樣條曲線。令n:=n+1;
步驟5:若n
這里可以調(diào)整各旋轉(zhuǎn)角度α,β,γ,φ,ψ,以決定各枝的分離程度;調(diào)整伸縮因子r,以決定各枝的長度;調(diào)整A,B,C的位置及其水平坐標偏移量,以決定樹冠的高低以及樹枝的彎曲程度。
3 數(shù)值模擬
例1:當在上述算法中取A,B,C位于主干的1.95/3,2.5/3,2.8/3處,收縮因子為r=5/7及N=5時,得到圖2所示的樹。每一級樹枝都是1條B樣條曲線,并根據(jù)不同的級確定不同的寬度,從而得到看起來的樹干和樹枝。
例2:圖3也是依據(jù)上面的算法,并將其中的幾個參數(shù)取為隨機值所得到的結(jié)果。由于它的參數(shù)是由CPU時鐘所決定的隨機數(shù),所以這樣得到的圖形是不可重復(fù)的。
圖3 由例2的方法得到的樹
圖4 根據(jù)例3得到的模擬圖
例3:圖4中的兩個圖像,是將上述算法在OpenGL環(huán)境下應(yīng)用到三維空間后所得到的一片三維蔬菜葉和一株三維樹。其中,樹的構(gòu)造是完全空間化的,而葉則鑒于其本身的結(jié)構(gòu)特性,只是浮雕式的??梢钥闯?在簡單的光照下,結(jié)果的逼真程度是相當高的。
4 結(jié) 語
以上給出一個繪制分形樹的算法,根據(jù)這一算法同時也可以繪制植物的葉,并經(jīng)過數(shù)值實驗得到了幾個形態(tài)相當逼真的樹的模型。這一結(jié)果對于植物的數(shù)值模擬有一定的意義,對于美術(shù)創(chuàng)作也有一定的使用價值。不足之處在于只有陰影而沒有投影,這一問題有待進一步的解決。
參考文獻
[1]霍翠花,柴立和.生態(tài)工業(yè)系統(tǒng)的分形生長理論分析與模擬[J].自然科學(xué)進展,2007,17(11):1 583-1 588.
[2]田雨.對分形算法中遞歸法的研究[J].四川大學(xué)學(xué)報,2007,44(5):990-994.
[3]程學(xué)珍,曹茂永,徐小平.基于分形的自然景物描述方法研究[J].系統(tǒng)仿真學(xué)報,2007,19(21):4 957-4 959.
[4]趙慧蘭.基于分形幾何學(xué)的植物圖像計算機模擬[J].浙江師范大學(xué)學(xué)報,2007,30(3):299-302.
[5]李鵬,趙德平,牛志成,等.基于廣義Mandelbrot集的分形圖像壓縮算法研究[J].計算機工程與應(yīng)用,2007,43(8):84-85.
[6]黃天云,張傳武.分形插值算法在分形自然景物模擬中的應(yīng)用[J].計算機工程與設(shè)計,2007,28(16):3 994-3 997.
[7]丁永勝,堵秀鳳,張水勝.Matlab分形植物模擬[J].齊齊哈爾大學(xué)學(xué)報,2008,24(3):63-65.
[8]孫艷,劉弘.基于L-系統(tǒng)的植物形態(tài)模擬研究[J].信息技術(shù)與信息化,2007(5):80-81.
[9]郝衛(wèi)亮,王劍英.基于分形的三維樹木形態(tài)模型[J].計算機應(yīng)用,2007,27(9):2 137-2 139.
[10]黃瓊,徐豐.分形樹的SAR 成像模擬[J].微波學(xué)報,2007,23(增刊):205-210.