🌐 ZH-TW

🌿 L-System 分形產生器

從林登馬耶爾系統(L-system)產生分形。選擇像科赫雪花或龍形曲線等預設,或撰寫你自己的改寫規則,觀看海龜繪製過程。

每行一條規則,例如 F=F+F--F+F。符號:F 與 G 會往前畫線,+ / - 轉向, [ 與 ] 儲存/還原位置。

4
指南

瞭解更多

01

什麼是 L-system?

L-system(Lindenmayer 系統)是一種由生物學家Aristid Lindenmayer1968年發明的形式文法,用來模擬植物與藻類生長。你先從一段短的公理字串開始,重複使用一組改寫規則逐一取代每個符號,因此字串會在每一輪變得更複雜。最後的字串會被當作一組海龜繪圖指令來讀取——移動、轉向、分支——在畫面上描繪分形。
02

海龜符號表

每個符號都是虛擬海龜的繪圖指令。FG 會前進並畫線;+ 會依設定角度左轉,- 則右轉;[ 將目前的位置與朝向推入堆疊(開始一條分支),] 則將其彈出還原(回到分支起點)。這兩個括號指令讓單一規則能長出莖與葉,從少量字元產生逼真的樹木狀形態。
03

撰寫自訂規則

要建立自己的分形,先設定一個公理,並每行輸入一條規則。經典的科赫曲線使用公理F、規則F=F+F--F+F,以及60°角度——每一輪都會將每個 F 取代為四個更小的單位。因為每次改寫都可能讓字串長度倍增,長度會呈指數成長,所以產生器將疊代次數上限設為7,並加上長度保護,避免圖形過度增長而讓瀏覽器失去回應。

常見問題

規則中可以使用哪些符號?
F 與 G 會向前畫線;+ 與 - 依你設定的角度左轉與右轉;[ 與 ] 用來開始與結束一段分支。其他字母是只作為占位符,不會直接繪圖,僅會被規則取代,這就是每輪疊代累積出複雜結構的方式。
為什麼要有限制疊代次數?
每一輪都會讓字串長度倍增,所以繪圖指令數量也會呈指數成長。為了維持瀏覽器回應速度,產生器將疊代上限設為 7,並加入長度保護,在圖形過大無法順暢繪製前提前中止。
有哪些著名的 L-system?
科赫雪花、龍形曲線與謝爾平斯基箭頭都是經典範例,還有林登馬耶爾最初設計用來描述的分支植物模型。