自 2010 年 · 每月支援超過 200 萬次工具執行
自 2010 年
加到 Chrome

我的工具箱

自動模式

尚未收藏任何工具。

升級為高級版
相關工具
謝爾賓斯基三角形產生器Delaunay 三角剖分生成器Robots.txt 產生器
主頁 > 雜項 > 通用工具
 

L-System分形產生器

以林登邁爾系統規則繪製碎形,可選科赫雪花、龍形曲線或自訂公理與生成規則。結果以 SVG 呈現。

免費使用無需註冊即時出結果
L-System分形產生器立即免費試用 ▼
嘗試預設值:
使用大寫 FG 表示繪製筆畫,並使用任何其他字母 (X, Y, A, B…) 表示不繪製的重寫符號。註解以 # 開頭。
F 向前繪製 f 移動 (不繪製) + 向左轉 - 向右轉 | 翻轉 180° [ 儲存狀態 ] 恢復狀態
朝向 = 正東 (曲線),90° = 正北 (樹木與植物向上生長)。疊代次數上限為 8 — 字串長度會迅速暴增。
伺服器端字串重寫 + 海龜繪圖 → 可縮放 SVG。

Embed L-System分形產生器 Widget

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分形產生器 與眾不同

逐筆畫動畫繪製 使用 SVG stroke-dashoffset 動畫觀察每個分支層級依序出現。首先繪製樹幹,然後是主要分支,接著是細枝 — 完美映射了重寫的遞迴結構。您可以隨時點擊「重新播放」。
深度感知著色 每個筆畫都清楚自己的括號深度。植物預設值使用棕色到綠色再到藍色的調色盤,使樹幹看起來非常逼真;曲線則使用靛藍到青色的漸層。可選的線條漸細功能可以讓分支在末端變細。
疊代追蹤 準確查看字串在每次疊代中如何增長。追蹤面板顯示了字串長度(通常每步增長 3-5 倍)以及每個中間字串的前 120 個字元 — 讓產生過程變得清晰可見,不再隱藏。
十二種教學級預設值 科赫雪花、科赫正方形、謝爾賓斯基三角形與箭頭曲線、海威龍形曲線、希爾伯特曲線、萊維 C 曲線、水晶、分形植物、樹木、灌木和海藻 — 每一個都展示了不同的 L-System 機制。
產生規則卡片 每條規則都顯示為一張卡片,包含符號、箭頭和取代字串。公理有自己專屬的琥珀色卡片。您可以一目了然地閱讀語法,而不用從文字區域中進行反向工程。
SVG 與 PNG 匯出 下載乾淨、無動畫的 SVG 以用於印刷和簡報,或下載 2 倍解析度的 PNG 以用於聊天和社群媒體。將 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/l-system分形產生器/,來自 MiniWebtool,https://MiniWebtool.com/

由 MiniWebtool 團隊製作。更新日期:2026-05-20

通用工具:

熱門與最新工具:

燃油效率轉換機 MPG L/100km km/L滑輪組計算機洛必達法則計算機查看全部 →
主頁 > 雜項 > 通用工具 > L-System分形產生器