分形与L-Systems

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

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

分形与L-Systems_第1张图片
final.png

其代码只有寥寥数行:

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

分形与L-Systems_第2张图片
1.png
分形与L-Systems_第3张图片
1-with-mark.png
  • 第二代(X被替换,F被替换)
分形与L-Systems_第4张图片
2.png
  • 第三代
分形与L-Systems_第5张图片
3.png
  • 第四代
分形与L-Systems_第6张图片
4.png
  • 第五代
分形与L-Systems_第7张图片
5.png
  • 第六代
分形与L-Systems_第8张图片
6.png

相关书目

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

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

Links

  • L-Systems Turtle Graphics Renderer

    一个简单的2D渲染器,本文的例子就来自于此页面,其实L-Systems是支持3D的。

你可能感兴趣的:(分形与L-Systems)