L-Systems 是鄙专业(生物系统工程)在生物系统模拟这门课程中需要学习的语言之一。
非常有趣。
开始之前,先看看一个例子:
其代码只有寥寥数行:
Iterations: 6
Angle: 25
Axiom: X
Rules: (X -> C0F-[C2[X]+C3X]+C1F[C3+FX]-X), (F -> FF)
正如 xqy 同学所说:形成一棵树需要的信息很少。
没错,自相似让分形美,而迭代另分形神秘。
所以让我们看看这棵树是怎么长成的:
再来看一眼简化的代码(黑白的版本):
start : X
rules : (X → F-[[X]+X]+F[+FX]-X),(F → FF)
F
:向前画一个单位
-
:顺时针旋转25°
+
:逆时针旋转25°
[
:暂存当前光标所在位置
]
:取出上一次存入的光标位置
其工作原理,一开始绘制X,然后每个round按照rules来迭代。
-
第零代
X(无输出)
-
第一代(X被替换)
F-[[X]+X]+F[+FX]-X(注:讲的时候仔细说说这里)
- 第二代(X被替换,F被替换)
- 第三代
- 第四代
- 第五代
- 第六代
相关书目
时间所限,就不具体讨论了,我只是来抛个砖。大家可以自行 Google 分形和 L-Systems 来获取更多的信息。
然后推荐一本书(我的老师课上推荐的):《The Algorithmic Beauty of Plants》(中译:植物的算法美)。
有提供免费的PDF电子版,维基百科上有相关的链接。
Links
-
L-Systems Turtle Graphics Renderer
一个简单的2D渲染器,本文的例子就来自于此页面,其实L-Systems是支持3D的。