专栏名称: 从零到零
重拾黑客精神,重构心智代码,升级创作工具。自黑党欢迎你!
目录
相关文章推荐
郓城融媒体中心  ·  央行公布,关键利率! ·  昨天  
郓城融媒体中心  ·  央行公布,关键利率! ·  昨天  
金融早实习  ·  东方财富证券2025春季校园招聘开启! ·  昨天  
51好读  ›  专栏  ›  从零到零

生成式艺术和算法创作07-向自然致敬的 L-system

从零到零  · 公众号  ·  · 2018-11-23 20:20

正文

生成式艺术和算法创作01-概述

生成式艺术和算法创作02-随机和噪声

生成式艺术和算法创作03-混沌和分形

生成式艺术和算法创作04-规则系统

生成式艺术和算法创作05-Tessellation

生成式艺术和算法创作06-形状语法


Lindenmayer system,简称 L-system,是由荷兰乌特勒支大学的生物学和植物学家,匈牙利裔的 Aristid Lindenmayer 于 1968 年提出的有关生长发展中的细胞交互作用的数学模型,被广泛应用于植物生长过程的研究和建模,也常用于模拟各种生物体的形态。

使用 L-system 生成的 3D 杂草

L-system 语法

L-system 是一系列不同形式的语法规则,它的自然递归规则产生自相似性,也能用于生成自相似的分形,例如迭代函数系统,因此也是一种形态发生(morphogenesis)算法。

L-system 一般可以这样定义:

G ={V,S,ω,P},
V: 变量符号集合
S: 常量符号集合
ω: 初始状态串(i.e. seed or axiom)
P: 生成式规则(production)

例如,Lindenmayer 研究海藻生长模式时提出的最早的 L-system:

变量 : A B

常量 : 无

公理 (axiom) : A

规则 : (A → AB), (B → A)

迭代过程:

下面我们来看看著名的 Koch snowflake(科赫曲线)是如何用 L-system 生成迭代过程的:

L-system 规则是:F→F+F--F+F。

想象一下,有一只乌龟🐢,当它接收到指令 F 时向前走,接收到指令 + 号就左转 60°,- 号右转 60°:

F→F+F--F+F 的意思就是:把每一个线段 F,用 F' 右转 F' 左转再左转 F' 右转 F' 替代……

晕了吧?00 为你准备了分解动作示意图:

使用 L-system 生成图形图像时,模型中的符号要能引用计算机屏幕上的图形元素。例如,Fractint 程序使用 Turtle graphics(类似于 Logo 编程语言中的图形)来生成屏幕图像。它将 L-system 模型中的每个常量解释为海龟命令。

在 L-system 的语法中,常用的符号及其含义:

Character        Meaning
  F       Move forward by line length drawing a line
  f        Move forward by line length without drawing a line
  +       Turn left by turning angle
  -        Turn right by turning angle
  |        Reverse direction (ie: turn by 180 degrees)
  [        Push current drawing state onto stack
  ]        Pop current drawing state from the stack
  #       Increment the line width by line width increment
  !        Decrement the line width by line width increment
  @      Draw a dot with line width radius
  {       Open a polygon
  }       Close a polygon and fill it with fill colour
>        Multiply the line length by the line length scale factor

 &       Swap the meaning of + and -
(         Decrement turning angle by turning angle increment
 )        Increment turning angle by turning angle increment


L-system 在生成式艺术中的应用

L-system 常被艺术家用于生成植物形态或者模拟植物的生长过程。

例如,下面的规则可以生成一株 Fractal plant:

变量 : X F
常量 : + − [ ]
起始状态 : X
规则 : (X → F+[[X]-X]-F[-FX]+X), (F → FF)
角度 : 25°


如果 L-system 语法中每个规则仅涉及单个符号而不涉及邻近符号,则属于 context-free。如果规则不仅取决于单个符号而且还取决于邻近符号,则属于 context-sensitive  L-system。这样,不同的规则可以在不同的上下文中运用。

如果每个符号对应多个 production,并且在每次迭代时以一定概率随机选择,则它是随机 L-system(Stochastic L-systems)。

L-system weed:

axiom = F
F -> FF-[XY]+[XY]
X -> +FY
Y -> -FX
angle = 22.5






请到「今天看啥」查看全文