分形与L-Systems

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

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

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

1.png
1-with-mark.png
  • 第二代(X被替换,F被替换)
2.png
  • 第三代
3.png
  • 第四代
4.png
  • 第五代
5.png
  • 第六代
6.png

相关书目

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

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

Links

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,733评论 0 38
  • 导语: 如果你已经加入了iOS攻城狮队伍,那么我们由衷地祝贺您正式成为一名终身学习的程序猿;有人觉得这句话...
    超人猿阅读 6,942评论 3 19
  • 曾经在思科的工厂测试系统`KlemTest` (`SUSE`命令行模式)中使用`VI`/`VIM`超过2年半,现在...
    戈多在地狱阅读 5,830评论 1 13
  • 曾经使用了几年多的Vim,手册也翻过一遍。虽然现在不怎么用vim了,曾经的笔记还是贴出来,与喜欢vim的朋友分享。...
    Sylar丶阅读 4,379评论 0 0
  • 平常上班时,常常羡慕那些有钱又有闲的人,不用操心劳碌太多,可以做自己想做的事。其实我们很多时候只是放任自己去向往去...
    一凡李子阅读 4,536评论 0 4