林登马耶系统(Lindemayer :LSystem 、L-系统)是一种形式语法,用于模拟生物系统的生长过程。用于生成分形图案、植物结构和其他自相似图像。
林登马耶系统由符号字母表、将每个符号扩展为更大符号串的生成规则、初始 "公理 "字符串以及将生成的字符串转换为几何结构的机制组成。
可使用 Rust 和 WebAssembly 在网站上实现 L 系统,生成类似巴恩斯利蕨类植物的分形图案。
- 生产规则反复应用于公理字符串,以生成代表分形的序列。
- 然后,通过将每个字符解释为海龟图形命令,将该序列绘制在画布上。
- 应用线性插值法,根据像素暗度为最终图像着色。
所涉及的关键概念包括 L 系统定义、迭代字符串重写、将字符串转换为图形以及应用颜色梯度。
关键摘要:
- L-系统可用于通过字符串重写规则和海龟图形解释来生成像巴恩斯利蕨类植物和植物结构这样的分形。
- JavaScript 是一种灵活的语言,用于在画布上实现 L 系统,尽管保持大规模性能具有挑战性。讨论了解析方法。
- Rust 代码展示了一个 L 系统生成器示例,但评论者指出,对于大型问题,字符串插入方法存在二次时间复杂度的风险。
- SuperCollider 用于在执行 L 系统时生成音乐作品。
- L-系统并不是严格的上下文无关语法,因为非终结符扩展在每一代中同时应用而不是顺序应用。