L-Systems 是鄙专业(生物系统工程)在生物系统模拟这门课程中需要学习的语言之一。 非常有趣。

一个例子

开始之前,先看看一个例子:

Final

其代码只有寥寥数行:

Iterations: 6
Angle: 25
Axiom: X
Rules: (X -> C0F-[C2[X]+C3X]+C1F[C3+FX]-X), (F -> FF)

需要的信息其实很少,只依赖自相似与迭代。所以让我们看看这棵树是怎么长成的:

再来看一眼简化的代码(黑白的版本):

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(注:讲的时候仔细说说这里)

    第1代

    G1 With Mark

  • 第二代(X被替换,F被替换)

    第2代

  • 第三代

    第3代

  • 第四代

    第4代

  • 第五代

    第5代

  • 第六代

    第6代

相关书目

时间所限,就不具体讨论了,我只是来抛个砖。大家可以自行 Google 分形和 L-Systems 来获取更多的信息。

然后推荐一本书(我的老师课上推荐的):《The Algorithmic Beauty of Plants》(中译:植物的算法美)。 有提供免费的PDF电子版,维基百科上有相关的链接。