🌐 ZH

🌿 L系统分形生成器

用林登迈耶系统(L系统)生成分形。选择科赫雪花或龙形曲线等预设,或编写自己的重写规则,观看海龟将它们绘制出来。

每行一条规则,例如 F=F+F--F+F。符号:F 和 G 向前绘制,+ / - 转向,[ 和 ] 保存/恢复位置。

4
指南

了解更多

01

什么是L系统?

L系统(林登迈耶系统)是生物学家阿里斯蒂德·林登迈耶于1968年为模拟植物和藻类的生长而发明的形式文法。你从一个简短的公理字符串开始,按照重写规则反复替换每个符号,字符串便会随着每一次迭代变得更加细致。最终的字符串被读作一串海龟绘图命令——移动、转向、分支——从而在屏幕上描绘出分形。
02

海龟字母表

每个符号都是给一只虚拟海龟的绘图指令。FG 一边画线一边前进;+ 按设定角度左转,- 右转;[ 将当前位置和方向压入栈中(开始一个分支),] 将其弹出(回到分支起点)。正是这两个括号命令让单条规则能长出茎和叶,仅凭几个字符就生成栩栩如生的树状形态。
03

编写自定义规则

要构建自己的分形,请设定一个公理,并每行写一条规则。经典的科赫曲线使用公理 F、规则 F=F+F--F+F、角度 60°——每次迭代都会把每个 F 替换为四个更小的 F。由于每次重写都可能使字符串长度成倍增长,增长是指数级的,因此生成器将迭代次数限制为 7 次,并施加长度保护,在图案失控冻结浏览器之前将其停下。

常见问题

规则中可以使用哪些符号?
F 和 G 向前画线;+ 和 - 按你设定的角度让海龟左转和右转;[ 和 ] 开始与结束一个分支。其他任何字母都是不绘制任何内容的占位符,它们只会被规则重写,这正是每次迭代逐步累积出复杂结构的方式。
为什么会有迭代上限?
每次迭代都可能使字符串长度成倍增加,因此绘图命令的数量呈指数增长。为保持浏览器响应流畅,生成器将迭代限制为 7 次,并加入长度保护,在图案大到无法平滑渲染之前将其停止。
有哪些著名的L系统?
科赫雪花、龙形曲线和谢尔宾斯基箭头都是经典例子,还有阿里斯蒂德·林登迈耶最初设计L系统时想要描述的分枝植物模型。