L-systems之研究与应用_第1页
L-systems之研究与应用_第2页
L-systems之研究与应用_第3页
L-systems之研究与应用_第4页
L-systems之研究与应用_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

L-systems 之研究與應用一、 研究動機:發現碎形之美。且目前一般圖形檔案格式過於龐大,欲達成經濟效益,藉由程式用字串的觀念來處理具有相似性的圖形。二、 研究目的:L-system4.0 之作者自定出一套語法,藉由他的語法了解其中的優缺點,並能充分運用其特色,建立一資料庫,製作出具有意義的圖形語法。進而欲從其中找出規則整理成資料庫,以建立一個在這個軟體之上的應用環境。讓使用者可以不必親自學習語法而可以利用可親介面直接達到畫樹的功能。三、研究工具:L-system4.0Visual Basic6.0四、 研究內容:1. L-system 概述:Lindenmayer systems(簡稱 L-systems)是一個模擬植物生長的數學理論。其重點是在強調植物的拓樸學,也就是說,其種子和植物個體的生長關係。L-systems 中的幾何理論常被用在模擬樹的生長。L-systems 是由圓角長方形在一維空間裡連接而成,通常是用來繪製基本碎形,在 1974 年 Frijters,Lindenmayre,Hogeweg 和 Hesper 為了繪製更複雜的高等植物,就增加了角度變化以及長度變化。在此之後,即有許多人投入研究,使其發展得更為成熟。2. L-systems 的語法:L-systems 主要是利用文字代替圖形,其列表如下:COMMANDSDrawing: Structure:F Draw full unit Store current locationZ Draw half unit Return to locationMovement: Start polygon shapef Move full unit End polygon shapez Move half unit Increment / L-systems 之研究與應用 2Decrement:Orientation: “ Inc. length by 1.1+ Turn left Dec. length by 0.9- Turn right ; Inc. angle by 1.1& Pitch down : Dec. angle by 0.9 Pitch up ? Inc. thickness by 1.4Roll right Additional:Special Orientation: c Increment color index| Turn 180 deg c(x) Set color index to x Roll 180 deg End of file$ Roll until Horizontal #Comment Turn/Pitch/Rollt Pitch down註:關於顏色的變化如下表c(1) 綠 c(8) 土黃c(2) 藍綠 c(9) 亮紫c(3) 亮綠 c(10) 亮黃c(4) 亮藍綠 c(11) 灰c(5) 寶藍 c(12) 銀灰c(6) 紫 default c(1)綠3. 程式結構:範例:4 遞迴次數60 預設角度5 寬度( 厚度) 為長度的 5%&(90)F-F-F 起始方向和種子F=F+FF+F 規則一 結束符號4. Edge rewriting此範例為 Edge rewriting ,所謂 Edge rewriting 即是用前一次依規則跑出來的圖形取代此次的線段,逐次分析如下:4605&(90)F-FFF= F+F-F+F逐次分析”F” 1. F=F+F-F+F2. F= F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F3. F= F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F + +F-F+F + F+F-F+F - F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F- F+F-F+F + F+F-F+F + F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F 4. F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F + F+F-F+F + F+F-F+F - F+F-F+F+ F+F-F+F- F+F-F+F+ F+F-F+F - F+F-F+F+ F+F-F+F+ F+F-F+F+ F+F-F+F- F+F-F+F+ F+F-F+F+F+F-F+F+ F+F-F+F - F+F-F+F + F+F-F+F + F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F + F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F + F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F + F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F + F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F + F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F + F+F-F+F + F+F-F+F - F+F-F+F + F+F-F+F5. Node rewriting720逐次分析”X”1. X=F+F-+ L-systems 之研究與應用 41&(90)+(90)XX=F+XF-X+XF=FF2. X=F+F+F-+F-F+F-+F+F-+3. X= F+F+F+F-+F-F+F-+F-F+F+F-+F-F+F-+F+F+F-+F-F+F-+4. X= F+F+F+F+F-+F-F+F-+F-F+F+F-+F-F+F-+F-F+F+F+F-+F-F+F-+F-F+F+F-+F-F+F-+F+F+F+F-+F-F+F-+F-F+F+F-+F-F+F-+5. X= F+F+F+F+F+F-+F-F+F-+F-F+F+F-+F-F+F-+F-F+F+F+F-+F-F+F-+F-F+F+F-+F-F+F-+F-F+F+F+F+F-+F-F+F-+F-F+F+F-+F-F+F-+F-F+F+F+F-+F-F+F-+F-F+F+F-+F-F+F-+F+F+F+F+F-+F-F+F-+F-F+F+F-+F-F+F-+F-F+F+F+F-+F-F+F-+F-F+F+F-+F-F+F-+此範例為 Node rewriting,既 edge rewriting 之後,欲在每次取代中增加一些線段,就此產生了 edge rewriting。為了達此目的,L-systems 就擴充了其他除了”F” 和”Z” 繪圖符號之外本身不具有繪製或移動的符號。所謂 Node rewriting 就是把原有的每個規則用其上一次所產生的形狀代入,且第一次為無值(即不繪製線條亦不移動位置),所以不包括 F, Z, f, z。看這個範例,以 X 為一個規則(第 5 行),第一次為無值,直接掠過,第二次就用第一次產生的”F+F-+”為第二次的 X 代入值,且每條直線都是兩線段(第 6 行),依此類推,直到第七次(第 1 行) ,並輸出第七次的圖形。7. 比較 edge rewriting 和 node rewriting#Edge rewriting #Node rewriting3 390 901 1&(90)+(90)Fl &(90)+(90)FlFl=Fl+Fr+ l=l+rF +Fr=-Fl-Fr r=-Fl-r 8. 樹的解析把 seed 的部分改成局部(例如: A, B, L),視表格中的英文字母為依據,而表格中的數字則是表示程式碼中的第一行迴圈次數的實際數字,所以會出現空白欄的現象。 ”#”在程式碼中為註解符號,有加”#” 該行之後的文字都跳過。結構一103040c(12)AA=aaSaaSAS=(.8)!(.9)a=tF&(.8)!LBL(137)z&(.7)!LBL(137)B=tF-(.8)!(.9)$LCL!(.9)CC=tF+(.8)!(.9)$LBL!(.9)B# C 比 B 慢一回。# C 和 B 只有在互為 B 或 C 的地方交換其餘皆相同時,利用相互的呼叫(B中有 C,C 中有 B)來達到本身遞迴的效果。L=c(8)+(30)f(20)-(120)f(20)-(120)f(20)#葉子下表中的 A 即是這個圖的整個程式的圖,因為種子剛好是 A 所以出來的結果是相同的。惟(A1) 代表此程式跑一次遞迴的成果。完成圖 L-systems 之研究與應用 6結構二103020#c(12)FAL#A=F&(.7)!BL(137)&(.6)!BL(137)(.9)!(.9)AB=F-(.7)!(.9)$CL(.9)!(.9)CC=F+(.7)!(.9)$BL(.9)!(.9)B#C 比 B 慢一次,但兩者之圖形除左右不同外皆相同L=c(8)+(45)f(10)-(45)f(20)-(45)f(10)+(45)|+(45)f(10)-(45)f(20)-(45)f(10)#葉子(A1) (A2) (A3) (A4)(B1) (B2) (B3) (B4)此時尚未成型(C1) (C2) (C3) (C4)此時尚未成型 此時尚未成型(L1)(全 1) (全 2) (全 3) (全 4) L-systems 之研究與應用 8完成圖9. 一行樹# 這個檔案的重點在於畫出一排的樹14530&(90)H #種子H=f(1500)TcH # 重點:向前移動並種下一棵樹T=(90)FFS # 本程式中實際畫樹的規則S=FFR(120)R(120)R(60)S # 表示有三段分支R=Ba # 單一分支的規則a=$tFCxFb # 每一片葉b=$tFDyFaB=&B # 角度變化C=+CD=-Dx=a # 延後兩次生長y=bF=(1.25)F(.8) # 把變化的長度變回來看這支範例,姑且不論他的樹型如何,現在唯一要深究的就是重點的那一行,就憑著這一行的規則,使得這支範例可以畫出所謂的一排樹。f(1500)TcH 的意義,我們逐一來翻譯。 f(1500)就是移動距離 1500,也就是說是樹與樹之間的間格距離;T 是呼叫下面的 T 規則,就是畫每一棵樹的規則;c 是變色的意思,所以看到的每一棵樹都有不同的顏色。而最後的 H 讓它每一次都把前一次的紀錄代到下一次裡,不然就沒辦法表現出一排不同時期的樹了。完成圖10. 樹葉統整:於此程式之範例中,有許多不同種類的葉子,於此做整理:l=c(8)+f-ff-f+|+f-ff-f L=c(8)-f+f+f-|-f+f+fL=f(200)c(8)+(30)f(200)-(120)f(200)-(120)f(200)L=c(8)+(30)f(20)-(120)f(20)-(120)f(20)11. 樹型變幻:演算法解說:規則均相同,以參數來造成外觀的不同。 單軸植物:Tree00行號 程式 註解1 10 字串代換次數2 45 預設分支角度3 15 預設厚度與長度的百分比4 c(12)+(90)FFAL 起始5 A=F&(.8)!BL(137)!(.9)A 規則:開始分枝時的主幹規則6 B=F-(.8)!(.9)$CL!(.9)C 規則:分枝規則7 C=F+(.8)!(.9)$BL!(.9)B 規則:分枝規則8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论