999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于X3D的三維分形植物建模

2012-10-26 03:30:36蔡文奇
圖學(xué)學(xué)報(bào) 2012年4期
關(guān)鍵詞:植物系統(tǒng)

張 杰, 蔡文奇

(汕頭大學(xué)計(jì)算機(jī)科學(xué)系,廣東 汕頭 515063)

自然界的植物千資百態(tài)、種類(lèi)繁多,貌似無(wú)章可循,無(wú)法用傳統(tǒng)的歐式幾何進(jìn)行描述。而分形算法的出現(xiàn),將這些看似毫無(wú)規(guī)律的植物的描述和模擬變成可能。植物的模擬是計(jì)算機(jī)圖形學(xué)的熱點(diǎn)和前沿課題之一,深深地吸引著研究者的眼球。國(guó)內(nèi)外有不少研究者運(yùn)用經(jīng)典的分形算法或分形算法的改進(jìn)算法,借助C++、java等語(yǔ)言提出了二維或三維植物的建模方法。如:Lindenmayar于1968年提出的L系統(tǒng)奠定了樹(shù)木模擬的基礎(chǔ)[1],Prusinkiewicz等[2-4]于1988~1996年間提出了基于L系統(tǒng)的樹(shù)木生長(zhǎng)模擬系統(tǒng);國(guó)內(nèi)比較有代表性的成果有趙星等于 2001年提出的雙尺度自動(dòng)機(jī)模型,反映了枝條動(dòng)態(tài)彎曲過(guò)程的力學(xué)原理[5],并于2003年進(jìn)一步對(duì)花序進(jìn)行模擬研究,模擬了有限花序和無(wú)限花序以及開(kāi)花的順序[6];張樹(shù)兵等于2002年提出了基于L系統(tǒng)的植物建模的改進(jìn),將系統(tǒng)代碼轉(zhuǎn)換成簡(jiǎn)單的遞歸表達(dá)式結(jié)構(gòu),但生成的植物單一,沒(méi)有參數(shù)化[7];張帆等于2003年提出了基于VRML的簡(jiǎn)化L系統(tǒng)算法[8],但生成的樹(shù)沒(méi)有交互性,也未提出葉序和葉子的生成算法。

模擬植物的主要分形方法有:文法構(gòu)圖算法(L系統(tǒng))、迭代函數(shù)系統(tǒng)算法(IFS算法)、分形演化算法(DLA模型)[9]。經(jīng)研究,單純用其中一種算法來(lái)對(duì)植物建模,不但在編程實(shí)現(xiàn)方面比較繁鎖,而且缺乏與用戶(hù)的交互性。本文一方面采用L系統(tǒng)與遞歸算法相結(jié)合的方法,可以方便地編程實(shí)現(xiàn)植物的建模,另一方面 , X3D結(jié)合JAVA來(lái)實(shí)現(xiàn)建模,滿(mǎn)足了用戶(hù)的交互性的要求。除此之外,本文提出了基于樹(shù)的生理結(jié)構(gòu)的建模,包括,分枝結(jié)構(gòu)、葉序、樹(shù)葉。

X3D(Extensible 3D)由Web3D聯(lián)盟提出,并于2004年正式通過(guò)ISO/IEC審議成為網(wǎng)絡(luò)三維國(guó)際通用標(biāo)準(zhǔn)ISO/IEC19775。它被定義為可交互操作、可擴(kuò)展、跨平臺(tái)的網(wǎng)絡(luò)3D內(nèi)容標(biāo)準(zhǔn),其前身是VRML97。X3D除了有VRML97的全部功能外,還整合了XML、JavaScript、Java和流媒體技術(shù)等先進(jìn)技術(shù),擁有更強(qiáng)大、更高效的3D計(jì)算能力、渲染質(zhì)量和傳輸速度[10]。

1 原理及方法

1.1 樹(shù)的生理結(jié)構(gòu)

1.1.1 軸結(jié)構(gòu)

樹(shù)枝是構(gòu)成樹(shù)的基本骨架,它的長(zhǎng)短及空間排列對(duì)樹(shù)的形狀起著支配作用,不同的樹(shù)有不同的分枝形式,主要有以下兩種軸結(jié)構(gòu):

1) 合軸分枝,如圖1(a)所示,即頂芽生長(zhǎng)到一定程度后就停止生長(zhǎng)或生長(zhǎng)速度變慢,這時(shí)側(cè)芽將超過(guò)頂芽的生長(zhǎng)速度,逐漸長(zhǎng)成很大的側(cè)枝,常見(jiàn)的合軸分枝樹(shù)有:梧桐、桑樹(shù)等;

2) 單軸分枝,如圖1(b)所示,即樹(shù)木有明顯的主干。主干是由頂芽不斷向上生長(zhǎng)形成的,各級(jí)分枝的生長(zhǎng)都不超過(guò)主干,常見(jiàn)的單軸分枝樹(shù)有:松樹(shù)、楊樹(shù)等。1.1.2 葉序

圖1 樹(shù)的分支結(jié)構(gòu)

葉在樹(shù)枝上的排列方式稱(chēng)為葉序。不同的植物有不同的葉序,主要分為:

1) 互生,如圖2(a)所示,即在樹(shù)枝的每個(gè)節(jié)點(diǎn)上交互生長(zhǎng)出一片樹(shù)葉,葉在樹(shù)枝上呈螺旋狀分布,如:向日葵;

2) 對(duì)生,如圖2(b)所示,即樹(shù)枝的每個(gè)節(jié)點(diǎn)上相對(duì)地生長(zhǎng)出兩片樹(shù)葉并排列于莖的兩側(cè),如:石竹;

3) 輪生,如圖2(c)所示,即樹(shù)枝上的每個(gè)節(jié)點(diǎn)上生長(zhǎng)出3片或3片以上的葉子,也稱(chēng)輪狀。如:夾竹桃;

4) 簇生,如圖2(d)所示,即兩片或兩片以上的葉子生在節(jié)間極度縮短的樹(shù)枝上,如馬尾松、銀杏等。

圖2 葉序

1.2 L系統(tǒng)原理

L系統(tǒng)描述的是植物生長(zhǎng)的數(shù)學(xué)模型,核心概念是重寫(xiě),重寫(xiě)是通過(guò)應(yīng)用一個(gè)重寫(xiě)規(guī)則或產(chǎn)生式的集合,對(duì)簡(jiǎn)單的初始目標(biāo)中的部分進(jìn)行連續(xù)置換來(lái)定義復(fù)雜目標(biāo)的技術(shù)[11]。一個(gè)L系統(tǒng)可以表示為一個(gè)有序三元組G=,其中,V是系統(tǒng)的字母表,w∈V+是一個(gè)非空字符串(稱(chēng)為起始字符串),P?V×V+是一個(gè)產(chǎn)生式(改寫(xiě)規(guī)則)的有限集合,一個(gè)產(chǎn)生式(a,x)∈P記為a→x[17]。本文用以下文法為基本理論建立植物模型(以二維二叉樹(shù)為例)

F代表初始元,“[]”表示按要求對(duì)初始元執(zhí)行偏移操作,“+”表示向左偏轉(zhuǎn),“-”表示向右偏轉(zhuǎn)“{}”表示將其內(nèi)部作為一個(gè)整體執(zhí)行上移操作。用此文法構(gòu)造二叉樹(shù)的過(guò)程如圖3所示。

圖3 分形樹(shù)的生成過(guò)程(n=4)

2 改進(jìn)的三維L系統(tǒng)

2.1 改進(jìn)L系統(tǒng)的數(shù)學(xué)模型

仔細(xì)分析用L系統(tǒng)生成分形樹(shù)的過(guò)程,不難發(fā)現(xiàn)這其實(shí)是一個(gè)遞歸過(guò)程[11]。本文將參數(shù)L系統(tǒng)和此遞歸過(guò)程相結(jié)合,提取出如式(1)所示的數(shù)學(xué)模型,h(0)為初始元,函數(shù)f(i)、g(i)為生成規(guī)則(i為整數(shù)且0≤i<n,n為設(shè)定的樹(shù)的深度),i為參數(shù),也為生成元,在每一次的遞歸過(guò)程中生成元i都是不同的,根據(jù)不同的參數(shù)i,就會(huì)有相應(yīng)不同的生成規(guī)則P。如當(dāng)參數(shù)i=1時(shí),則生成元i=h(i- 1),生成規(guī)則為f(i);當(dāng)1

樹(shù)的數(shù)學(xué)模型的遞歸過(guò)程如式(2)所示

2.2 三維L系統(tǒng)

將上述二維的L系統(tǒng)擴(kuò)展為三維的L系統(tǒng),三維仿射是一個(gè)關(guān)鍵的因素。

定義:L代表原三維圖形,L′代表經(jīng)過(guò)三維仿射W后得到的新圖形,則仿射W可表示為

上式可簡(jiǎn)化為W:L′ =L·A+T,可通過(guò)改變?nèi)S矩陣A、T即可實(shí)現(xiàn)對(duì)三維圖形的旋轉(zhuǎn)、平移、按比例縮放等操作,如

分別表示原圖形L繞X軸、Y軸、Z軸旋轉(zhuǎn)一定弧度α;

· 若T= (0,h,0 )T,則表示L沿Y軸方向平移h。

3 用改進(jìn)的L系統(tǒng)建立植物模型

在以上理論中,需用鏈表結(jié)構(gòu)來(lái)表示二叉樹(shù),這樣編程實(shí)現(xiàn)的效率較低。本文用 X3D結(jié)合JAVA的方式實(shí)現(xiàn)建模,大大簡(jiǎn)化了程序的復(fù)雜度,同時(shí)也滿(mǎn)足了用戶(hù)實(shí)時(shí)性和交互性的要求。一方面 X3D中定義了很多幾何圖形節(jié)點(diǎn)和材質(zhì)等域,利用這些節(jié)點(diǎn)和域就可以簡(jiǎn)單快捷地生成三維的初始元圖形;另一方面,為了節(jié)約內(nèi)存等開(kāi)銷(xiāo),降低編程的繁瑣度,使用戶(hù)可隨機(jī)地生成想要的圖形,本文用JAVA來(lái)實(shí)現(xiàn)用遞歸結(jié)構(gòu)來(lái)代替鏈表結(jié)構(gòu)。

3.1 樹(shù)的分枝結(jié)構(gòu)的建模

用n(n>0)表示樹(shù)的層數(shù),以控制整個(gè)程序的遞歸次數(shù);用t(t>0)表示t叉樹(shù),即一個(gè)主干上有t個(gè)分枝;用b(b0)控制每根樹(shù)枝上葉序簇的數(shù)量;樹(shù)干的粗細(xì)、長(zhǎng)短分別用比例系數(shù)trs、tls來(lái)控制;wt控制樹(shù)枝與父枝的夾角;wl控制葉序簇與父枝的夾角;用比例系數(shù)ls控制葉序簇的大小比例等參數(shù)。

1)T是由Cylinder節(jié)點(diǎn)定義的一個(gè)半徑為r[j],高度為h[j]的圓柱體并沿Y移動(dòng)-h[j]/2,r[j]、h[j](0 ≤j

2) 定義Tmax+=T[a](0 ≤a

3) 如果j= 0(0 ≤j

4) 如果j=1,則使G[0]繞Y軸旋轉(zhuǎn)一定弧度6.282 (a+1)/m,并沿Y軸平移 -h[j]·(a+ 1)·ts/m,記為T(mén)1[a],重寫(xiě)Tmax,并命Tmax+=T1[a];對(duì)L=g[ 0]+Tmax+T沿Y軸平移h[j],然后繞X軸旋轉(zhuǎn)一定弧度wt,得到的結(jié)果記為g[1];

5) 如果j=n-1,定義stbe+=tbe[i](0≤i

否則將g[j- 1]+Tmax+T沿Y軸平移h[j],然后繞Y軸旋轉(zhuǎn)一定弧度wt,此變換記為G[j],所得圖形記為g[j];

6) 輸出圖形g[n-1],即為最終結(jié)果。只要輸入不同的參數(shù)就可以得到不同的樹(shù),其中生成的部分分形樹(shù)效果圖如圖4所示。

圖4 生成的分形樹(shù)

3.2 樹(shù)的葉序結(jié)構(gòu)的建模

在葉序的生成過(guò)程中,用n控制遞歸次數(shù),用m來(lái)控制中間生成元中樹(shù)葉的樹(shù)木和葉序的種類(lèi),用w控制樹(shù)葉與父枝的夾角,用α控制樹(shù)枝的彎曲度。以下為具體算法步驟:

1) 用Cylinder節(jié)點(diǎn)生成樹(shù)葉所附著的樹(shù)枝stick,高度為H,并將stick上移H/2;

2) 如果m=1,即要生成互生葉序,則用內(nèi)聯(lián)節(jié)點(diǎn)Inline讀取生成的樹(shù)葉節(jié)點(diǎn)leaf.x3d,并繞X軸旋轉(zhuǎn)一定弧度w,然后沿Y軸平移H,所得結(jié)果記為t[0];復(fù)制t[i-1],并繞Y軸旋轉(zhuǎn)一定弧度1.5705,然后沿Y軸平移-H/m,所得結(jié)果記為t[i](其中0≤i

3) 如果m=2,則即要生成對(duì)生葉序,則用內(nèi)聯(lián)節(jié)點(diǎn)Inline讀取生成的樹(shù)葉節(jié)點(diǎn)leaf.x3d,并繞Z軸旋轉(zhuǎn)一定弧度w,然后沿Y軸平移H;繼續(xù)導(dǎo)入leaf.x3d,,并繞Z軸旋轉(zhuǎn)一定弧度-w,然后沿Y軸平移H;

4) 否則就生成輪生或簇生葉序,則用內(nèi)聯(lián)節(jié)點(diǎn)Inline讀取生成的樹(shù)葉節(jié)點(diǎn)leaf.x3d,并繞Y軸旋轉(zhuǎn)一定弧度6.282(c/m+ 1)/m,然后沿Y軸平移 -H·c/m2,所得結(jié)果記為t[0];復(fù)制t[i-1],并繞Y軸旋轉(zhuǎn)一定弧度1.5705,然后沿Y軸平移-H/m,所得結(jié)果記為t[i](0 ≤i<m)。若c=0即為輪生葉序,否則為簇生葉序;

5) 將以上生成的圖形記為G[0];

6) 將G[j-1]繞X軸旋轉(zhuǎn)一定弧度α,然后沿Y軸平移H;復(fù)制G[j-1],將此步驟中生成的圖形記為G[j](0 ≤j

7) 輸出圖形G[n- 1],即為最終結(jié)果,生成的葉序效果圖如圖2所示。

3.3 樹(shù)葉的建模

繪制樹(shù)葉模型的基本思想是先畫(huà)一個(gè)三角形△ABC,然后以△ABC為生成元,對(duì)它進(jìn)行旋轉(zhuǎn)、縮放等操作,然后將之前生成的總圖形作為生成元重復(fù)以上步驟就可以得到想要的結(jié)果。在建模的過(guò)程中,用n來(lái)控制遞歸次數(shù),用參數(shù)y來(lái)控制線(xiàn)段AB的初始長(zhǎng)度,用β控制△ABC的寬度,用s控制線(xiàn)段AB與AC的長(zhǎng)度差異,用α控制葉子的彎曲程度。具體算法步驟如下:

1) 給定初始坐標(biāo)A( 0,0,0)和B(0,y,0 ),用公式(6)求得三角形另一個(gè)頂點(diǎn)C(x′,y′,z′),其中∠CAB=β,s為線(xiàn)段AC的長(zhǎng)短比例(A點(diǎn)坐標(biāo)不變),畫(huà)三角形△ABC得到圖形L[0];

1) 將上一步中得到的圖形L繞Y軸旋轉(zhuǎn)一定弧度α,然后繞Z軸旋轉(zhuǎn)一定弧度β,得到新圖形L′;

2) 將L[0]按比例s[i]=1 + 0.2i縮放(A點(diǎn)坐標(biāo)不變)得到圖形L[i];

3) 將前面所有步驟中得到的總圖形L+L[i]作為新的圖形L并返回步驟2),重復(fù)n次,就能得到想要的葉子圖形。

生成的樹(shù)葉模型如圖5所示,有橢圓形、針形、菱形、掌形、扇形等,只要輸入不同的參數(shù)就可以生成不同的葉子模型。

圖5 生成的葉子

4 結(jié) 束 語(yǔ)

本文針對(duì)傳統(tǒng)L系統(tǒng)編程實(shí)現(xiàn)繁瑣,生成的圖形沒(méi)有隨機(jī)性的不足,提出了用 X3D結(jié)合JAVA來(lái)輕松實(shí)現(xiàn)三維圖形的建模,以上所介紹的系統(tǒng)不僅可以生成逼真的三維樹(shù),還可以通過(guò)設(shè)置不同的參數(shù),生成花、草等其他三維圖形,除此之外,可用改變參數(shù)的方式,運(yùn)用 X3D中生成動(dòng)畫(huà)的節(jié)點(diǎn)可生成動(dòng)態(tài)的圖形,如樹(shù)木的生長(zhǎng)過(guò)程,花開(kāi)的過(guò)程等。因此,本方法還是有一定的推廣價(jià)值。

[1]Lindenmayer A. Mathematical models for cellular interactions in development [J]. Journal of Theoretical Biology, 1968, 18: 280-315.

[2]Prusinkiewicz P, et al. Developmental models of herbaceous plants for computer imagery propose [J].Computer Graphics, 1988, 22 (4): 141-150.

[3]Prusinkiewicz P, et al. Synthetic topiary [C]//Computer Graphics Proceedings, Annual Conference Series,ACM SIGGAR PH,Orlando, Florida, 1994: 351-358.

[4]Mech R, Prusinkiewicz P, et al. Visual models of plants interacting with their environment [C]//Computer Graphics Proceedings, Annual Conference Series,ACM SIGGAR PH, New Orleans, Louisiana, 1996:397-410.

[5]趙 星, DeReffye P, 熊范綸, 等. 虛擬植物生長(zhǎng)的雙尺度自動(dòng)機(jī)模型[J]. 計(jì)算機(jī)學(xué)報(bào), 2001, 24(6):608-617.

[6]趙 星, DeReffye P, 熊范綸, 等. 基于雙尺度自動(dòng)機(jī)模型的植物花序模擬[J]. 計(jì)算機(jī)學(xué)報(bào), 2003, 26(1):116-124.

[7]張樹(shù)兵, 王建中. 基于L系統(tǒng)的植物建模方法改進(jìn)[J].中國(guó)圖像圖形學(xué)報(bào), 2002, 7(5): 457-460.

[8]張 帆, 譚建榮. VRML環(huán)境中3維分形植物的生成及應(yīng)用[J]. 計(jì)算機(jī)工程, 2003, 29(21): 110-112.

[9]孫博文. 分形算法與程序設(shè)計(jì)[M]. 北京: 科學(xué)出版社, 2004: 61-216.

[10]張金釗, 張金銳, 張金鏑. X3D 虛擬現(xiàn)實(shí)設(shè)計(jì)[M].北京: 電子工業(yè)出版社, 2007: 7-8.

[11][加]Prusinkiewicz P, Lindenmayer A. 植物的算法美[M]. 孟 軍, 鄧華玲譯. 北京: 科學(xué)出版社,2008: 1-3.

猜你喜歡
植物系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
植物的防身術(shù)
把植物做成藥
哦,不怕,不怕
將植物穿身上
主站蜘蛛池模板: 日韩无码白| 亚卅精品无码久久毛片乌克兰| 亚洲男人的天堂在线观看| 亚洲清纯自偷自拍另类专区| 免费一看一级毛片| 久久一级电影| 好久久免费视频高清| 91无码网站| 国产理论最新国产精品视频| 国产精品区视频中文字幕 | 亚洲视频四区| 久久综合AV免费观看| 久久综合亚洲色一区二区三区| 99九九成人免费视频精品| 夜夜操天天摸| 亚洲最黄视频| 老司国产精品视频91| 粉嫩国产白浆在线观看| 深爱婷婷激情网| a级毛片在线免费| 亚洲国产精品成人久久综合影院 | 国产乱人免费视频| 亚洲欧美成人网| 99精品伊人久久久大香线蕉| 久久99热这里只有精品免费看| 国产成人啪视频一区二区三区| 国产97公开成人免费视频| 国产美女主播一级成人毛片| 在线国产毛片手机小视频| 久久这里只有精品23| 国产幂在线无码精品| 国产亚洲精品无码专| 欧美亚洲国产日韩电影在线| 国产一区二区福利| 国产美女久久久久不卡| 亚洲91精品视频| 日本午夜在线视频| 999国产精品| 亚洲成人精品在线| 日韩精品亚洲一区中文字幕| 亚洲Va中文字幕久久一区| 久久夜夜视频| 国产不卡网| 欧美怡红院视频一区二区三区| 九九视频在线免费观看| AV在线天堂进入| 国产一级视频久久| 亚洲欧美不卡| 久久午夜夜伦鲁鲁片无码免费| 精品一区二区三区水蜜桃| 狠狠亚洲五月天| 四虎永久免费在线| 午夜日b视频| 精品福利国产| 亚洲综合久久成人AV| 日本人妻一区二区三区不卡影院 | 99热这里只有免费国产精品| 中文字幕亚洲综久久2021| 精品视频91| 91在线播放国产| 国产精品播放| 色成人综合| 久久国产V一级毛多内射| 92精品国产自产在线观看 | 亚洲成人播放| 999精品免费视频| 欧美久久网| 亚洲欧洲日产国码无码av喷潮| 日本欧美午夜| 日本在线欧美在线| 免费在线色| 亚洲成a人片| 四虎永久在线视频| 国产免费精彩视频| 久久国产高清视频| 久久情精品国产品免费| 国产激情影院| 久久永久视频| 欧美啪啪一区| Aⅴ无码专区在线观看| 精品视频第一页| 欧美啪啪一区|