L-System分形產生器
利用林氏系統(L-system)規則產生美麗的分形。選擇經典的預設組合(科赫雪花、謝爾賓斯基、龍形曲線、分形樹、植物)或編寫您自己的公理、產生規則與海龜旋轉角度 — 本工具會擴展字串、引導海龜移動,並渲染出具有深度著色與動畫繪製效果的 SVG。
偵測到廣告封鎖,導致我們無法顯示廣告
MiniWebtool 依靠廣告收入免費提供服務。如果這個工具幫到你,歡迎升級 Premium(無廣告 + 更快),或將 MiniWebtool.com 加入允許清單後重新整理頁面。
- 或升級 Premium(無廣告)
- 允許 MiniWebtool.com 顯示廣告,然後重新載入
L-System分形產生器
**L-System分形產生器**將 Lindenmayer 系統語法轉化為美麗、具備深度顏色且有動畫效果的 SVG 分形。選擇一個預設值 — 科赫雪花、謝爾賓斯基三角形、海威龍形曲線、希爾伯特曲線、分形植物、樹木或灌木 — 或者編寫您自己的公理與產生規則,並看著字串爆炸般地成長為自相似的形狀。此工具在伺服器端擴展字串,引導虛擬海龜讀取每個符號,並將結果渲染為可縮放的 SVG,您可以下載、編輯或貼到您的簡報中。
什麼是 L-System?
Lindenmayer 系統(簡稱 L-System)是一種並行字串重寫語法,由匈牙利生物學家 Aristid Lindenmayer 於 1968 年發明,旨在對植物和微生物的生長進行數學建模。它包含三個要素:**公理**(由一個或多個符號組成的起始字串)、一個或多個**產生規則**(每條規則將單個符號映射到取代字串)以及**解釋**(在這裡是海龜繪圖 — 一隻服從前進、左轉、右轉、儲存和恢復指令的虛擬畫筆)。
要執行該系統,您從公理開始並並行套用規則 — 所有符號都會同時被取代,然後開始下一次疊代。經過幾次疊代後,字串會變得非常龐大,且呈現出明顯的分形特徵。當您將該字串交給海龜時,自相似的圖形就會顯現出來。
海龜符號一覽
| 符號 | 海龜的動作 |
|---|---|
| F, G | 向前移動一步並繪製一條線。 |
| f | 向前移動一步但不繪製。 |
| + | 向左轉您指定的角度(例如 25°、60°、90°)。 |
| - | 向右轉該角度。 |
| | | 將朝向翻轉 180°。 |
| [ | 將目前的位置和朝向推入堆疊中 — 用於開始一個分支。 |
| ] | 從堆疊中彈出位置和朝向 — 返回到分支點。 |
| X, Y, A, … | 其他字母:純重寫符號。它們會影響下一次疊代,但本身不繪製任何內容。 |
是什麼讓這個 L-System分形產生器 與眾不同
重寫是如何運作的(範例說明)
以公理為 F、規則為 F → F+F-F-F+F 且海龜角度設定為 90° 的科赫曲線為例。以下是字串的演變過程:
- 疊代 0:
F— 1 個字元。 - 疊代 1:
F+F-F-F+F— 9 個字元。單個 F 變成了一個方形凸起。 - 疊代 2:
F+F-F-F+F + F+F-F-F+F - F+F-F-F+F - F+F-F-F+F + F+F-F-F+F— 49 個字元。疊代 1 中的每個 F 本身都被替換成了 F+F-F-F+F。 - 疊代 3: 249 個字元。疊代 4:1,249 個字元。疊代 5:6,249 個字元。
這種增長是幾何級數的:每次疊代都會將長度乘以 5(取代字串的長度)。經過 5 次疊代後,海龜有數千個指令需要執行,其結果是清晰可辨的科赫分形 — 一條類似海岸線的曲線,其分形維度為 log(4)/log(3) ≈ 1.26。
括號如何構建植物
如果沒有括號符號 [ 和 ],每個 L-System 都會是一條單一且不間斷的曲線。括號解鎖了分支功能:當海龜遇到 [ 時,它會將目前的位置和朝向推入堆疊中,在括號內繪製分支,然後在遇到 ] 時彈出恢復到原來的位置。規則 F → F[+F][-F]F 代表「每個前進筆畫都會變成一個筆畫、一個左分支、一個右分支和一個延續筆畫」— 這就是製作樹木的配方。
分形植物預設值完美地展示了這一點。它的規則 X = F+[[X]-X]-F[-FX]+X 使用雙重括號來編碼分支中的分支。經過 5 次疊代後,生成的字串包含 11,000 多個符號和約 1,000 多對括號 — 海龜盡職地沿途執行儲存與恢復,繪製出一株蕨類植物。
L-System 應用於何處
- 程序化植物生成: SpeedTree 和 Houdini 生態系統使用 L-System(以及它們的隨機、參數化和上下文相關擴充)為電影和遊戲種植森林、叢林和農田。
- 建築與城市建模: 源自 L-System 的基於規則的語法可以生成建築物外牆、街道網絡以及整個程序化城市。
- 生物學與形態學: 最初的應用場景 — 模擬藻類細胞的發育、植物的分支以及珊瑚和水晶的結構。
- 電腦圖學與 Demoscene 藝術: 複雜分形曲線的緊湊描述,檔案大小極小 — 一條 30 位元組的規則就能產生百萬像素的圖像。
- 數學教育: 上下文無關並行語法的經典範例;從形式語言到分形幾何的直觀橋樑。
- 生成音樂與編舞: 相同的重寫機制應用於樂句或舞蹈動作,能產生結構化且有機的創作。
設計您自己的 L-System
以下是一些始終能產生美觀分形的經驗法則:
- 從規模小開始。 新規則執行三次疊代就足以看出結構。只有在確定形狀按照您期望的方式增長後,再增加次數。
- 選擇能整除 360° 的角度(60°、72°、90°、120°)來繪製曲線。對於植物,18° 到 30° 之間的角度會產生看起來很自然的分支。
- 使用非繪製符號(如 X)來控制結構。規則
F → FF只是將每個筆畫加倍,但以X為公理的X → F+X[-X]則會創建一個分支形狀 — F 繪製可見的線條,X 控制分支模式。 - 保持括號平衡。 每個
[必須有一個匹配的]。雖然此工具在繪製時容忍不平衡的括號,但您會遇到意料之外的跳躍。 - 注意增長率。 If 您的規則將 F 替換為五個符號,則每次疊代都會將字串乘以 5。
F → FF+F-F+F的六次疊代就已經超出了大多數渲染器的負荷。
隨機與參數化擴充
此工具中的確定性 L-System 是最簡單的變體。現實世界中的植物建模者使用更豐富的語法:**隨機 L-System**(stochastic L-systems)為同一個符號的多條規則分配機率,因此每株植物都略有不同。**參數化 L-System**(parametric L-systems)將數值(分支的長度或厚度)附加到符號上,並允許規則讀取和修改它們。**上下文相關 L-System**(context-sensitive L-systems)允許規則僅在其符號具有特定鄰居時才觸發。這些擴充將靜態分形轉化為一個可以生長、反應和老化的系統。
常見誤解
- 「疊代次數越多總是看起來越好」: 錯誤。超過五或六次疊代後,筆畫會重疊並失去細節。最佳疊代深度取決於規則和顯示解析度。
- 「L-System 只能繪製植物」: 它們可以描述任何自相似曲線。希爾伯特曲線、龍形曲線、謝爾賓斯基地毯 — 全都是 L-System。
- 「必須使用括號」: 不需要。像科赫、龍形和萊維等單筆畫曲線不需要使用括號。只有當您需要分支時才需要括號。
- 「所有分形都具有相同的分形維度」: 錯誤。科赫的維度約為 1.26,龍形的維度是 2,謝爾賓斯基的維度約為 1.58,希爾伯特曲線的維度接近 2 — 每條規則都有自己的維度,由字串增長速度與海龜移動距離決定。
常見問題
什麼是 L-System?
Lindenmayer 系統(簡稱 L-System)是一種並行字串重寫語法,由生物學家 Aristid Lindenmayer 於 1968 年發明,用於模擬植物生長。它從一個公理(短字串)開始,重複套用將單個符號替換為更長字串的產生規則,然後將最終字串解釋為海龜繪圖指令。其結果是一個自相似的分形。
這些符號代表什麼意思?
F 和 G 是繪製筆畫(海龜向前移動並繪製一條線)。f 是靜音移動(向前移動但不繪製)。+ 將海龜依您指定的角度向左轉,- 向右轉,而 | 則翻轉 180 度。[ 將海龜的位置和朝向推入堆疊中,] 則將其彈出恢復。所有其他字母(X、Y、A、B 等)均為僅重寫符號 — 它們會影響下一次疊代,但不會進行繪製。
為什麼 L-System 擅長模擬植物?
括號符號 [ ] 讓海龜能夠記住並恢復其位置,因此單個規則就能實現分支。像 F = F[+F][-F]F 這樣的規則可以繪製一根莖,向兩個方向分支,然後繼續生長 — 這正是植物生長的方式。透過稍微不同的規則和角度,同一個引擎就能生成蕨類、灌木、樹木、海藻和根系。
規則中的 F 和 X 有什麼區別?
F 既是一個繪製符號(當海龜看到 F時會繪製一條線)又是一個重寫符號(規則可以在左側匹配 F)。X 則是一個純重寫符號 — 當海龜在繪製過程中看到 X 時,它什麼都不做。當您想要一個能控制結構但又不被繪製出來的符號時,X 就非常有用。
我應該使用多少次疊代?
對於大多數預設值, 4-6 次疊代就能產生可辨識的分形。字串長度呈指數級增長,因此從 6 次增加到 7 次疊代可能會使工作量增加 3-5 倍。此工具將疊代次數限制為 8 次,重寫後的字串限制為 250,000 個字元,以保持渲染的即時響應。
什麼控制了基於深度的顏色?
每個 [ 都會將海龜推入更深的括號層級;每個 ] 則會彈出恢復。所達到的最深層級即為最大深度。選擇「深度漸層」可以根據每個筆畫的括號層級來著色 — 這非常適合植物,因為樹幹和分支自然會處於不同的深度。
起始角度是如何運作的?
起始角度是海龜在第一步時所面對的方向。0° 表示正東(向右)— 供大多數曲線使用。90° 表示正北(向上)— 供植物和樹木使用,以便它們朝著畫布頂部生長。嘗試更改任何預設值上的起始角度以旋轉整個圖形。
我可以下載這個分形嗎?
可以。您可以下載為 SVG 以在印刷、簡報和雷射切割機中進行清晰的縮放,或者下載為 PNG 以在聊天和社群媒體上分享。「複製」按鈕可複製完整的 L-System 定義(公理、規則、角度、疊代次數),以便您將其貼到筆記或其他工具中。
最大複雜度是多少?
最多支援 8 次重寫疊代、擴展字串中 250,000 個字元、60,000 個繪製線段以及 12 條產生規則。這些限制使 SVG 足夠輕量,從而能夠流暢地渲染和下載。對於更大的網格,請考慮使用桌上型 L-System 工具,例如 cgkit 或 Houdini。
如果我的括號不平衡會怎麼樣?
不平衡的 ](沒有匹配的 [)會被默默忽略 — 海龜會留在原地。不平衡的 [(沒有閉合的 ])意味著海龜永遠不會彈出恢復,因此它會繼續向前繪製而永遠不會返回分支點。此工具總是會完成繪製,但結果可能與您的預期不符。請為每個 [ 匹配一個 ]。
什麼是海龜繪圖解釋器?
它是一個服從來自字串移動指令的虛擬畫筆。這個名字源於 Logo 程式語言。海龜有一個位置和一個朝向(它面對的方向)。每個 F 都會使其在目前朝向上面前移動一步;+ 和 - 會旋轉朝向。海龜正是將平面字串轉化為 2D 圖形的關鍵。
為什麼我的分形看起來被壓扁了?
此工具會自動將圖形填滿至畫布,同時保持長寬比,因此圖形會縮放但不會變形。如果分形在視覺上看起來不平衡,那可能是規則本身的原因 — 例如,龍形曲線寬度大於高度,這是正確的。增加疊代次數以查看形狀的收斂。
引用此內容、頁面或工具為:
"L-System分形產生器" 於 https://MiniWebtool.com/zh-tw//,來自 MiniWebtool,https://MiniWebtool.com/
由 MiniWebtool 團隊製作。更新日期:2026-05-20