应该如何解释 ~ 以重写植物算法之美的 L 系统语法中的模块?

问题描述

Algorithmic Beauty of Plants 中,有一个示例参数 L 系统(第 69 页)显示了花番红花的模型:

L-systems rules for modeling a crocus

我一直无法弄清楚如何解释产生式中的 ~ 符号:

p1: a(t) : t<Ta --> F(1)[&(30)~L(0)]/(137.5)a(t+1)

上面描述的文字是:

生产 p1 描述了连续的节间 F 和植物顶点 a 的叶子 L 的创建。叶子从茎上以30°的角度分枝,绕主轴盘旋,发散度为137.5°。

  • & 的意思是“弯腰”
  • / 表示“向右滚动”
  • [ 表示开始一个新的分支,保存状态
  • ] 表示跳回到之前的保存状态

我知道它的目的是表示螺旋或扭曲的运动 - 但不清楚这是“稍微移动”还是呈现为多个连续操作的东西,在重写中抛出了许多额外的元素。

我翻遍了 Algorithmic Botany用户手册,但没有找到任何关于生产最终结果的参考资料。上图似乎显示了相对两侧的叶子,当它们沿着茎向上移动时会螺旋状地旋转。如果这只是“稍微扭曲并抛出一片叶子”,我希望只看到一片叶子,而不是一对。

制作 3 中使用了相同的符号,它也以螺旋形式显示花瓣:

p3 : A : * --> ~K(0)

谁能解释一下我遗漏了什么?

解决方法

当然在这里问过之后,我才找到答案。 ~ 不代表螺旋或扭曲,而是代表“呈现表面”。

我在 James Hanan's 1992 dissertation on implementing L-systems 中找到了对它的引用,幸运的是从 algorithmicbotany.com 站点链接。

根据论文(论文第 36 页)

当海龟遇到代表前面有波浪号 (~) 的表面的符号时,会绘制相应的表面。使用用户定义的接触点 Ps、航向矢量 Hs 和向上矢量 Us 作为参考,确定预定义表面 S 的确切位置和方向。

论文接着展示了一个渲染苹果花和雄蕊的例子,带有适当的 L 系统产生式语句,使用 ~ 符号表示根据后面的符号显示相关表面~