L-Systems 是鄙專業(yè)(生物系統(tǒng)工程)在生物系統(tǒng)模擬這門課程中需要學(xué)習(xí)的語言之一。
非常有趣。
開始之前,先看看一個例子:

final.png
其代碼只有寥寥數(shù)行:
Iterations: 6
Angle: 25
Axiom: X
Rules: (X -> C0F-[C2[X]+C3X]+C1F[C3+FX]-X), (F -> FF)
正如 xqy 同學(xué)所說:形成一棵樹需要的信息很少。
沒錯,自相似讓分形美,而迭代另分形神秘。
所以讓我們看看這棵樹是怎么長成的:
再來看一眼簡化的代碼(黑白的版本):
start : X
rules : (X → F-[[X]+X]+F[+FX]-X),(F → FF)
F:向前畫一個單位
-:順時針旋轉(zhuǎn)25°
+:逆時針旋轉(zhuǎn)25°
[:暫存當前光標所在位置
]:取出上一次存入的光標位置
其工作原理,一開始繪制X,然后每個round按照rules來迭代。
-
第零代
X(無輸出)
-
第一代(X被替換)
F-[[X]+X]+F[+FX]-X(注:講的時候仔細說說這里)

1.png

1-with-mark.png
- 第二代(X被替換,F(xiàn)被替換)

2.png
- 第三代

3.png
- 第四代

4.png
- 第五代

5.png
- 第六代

6.png
相關(guān)書目
時間所限,就不具體討論了,我只是來拋個磚。大家可以自行 Google 分形和 L-Systems 來獲取更多的信息。
然后推薦一本書(我的老師課上推薦的):《The Algorithmic Beauty of Plants》(中譯:植物的算法美)。
有提供免費的PDF電子版,維基百科上有相關(guān)的鏈接。
Links
-
L-Systems Turtle Graphics Renderer
一個簡單的2D渲染器,本文的例子就來自于此頁面,其實L-Systems是支持3D的。