问题描述
在 Algorithmic Beauty of Plants 中,有一个示例参数 L 系统(第 69 页)显示了花番红花的模型:
我一直无法弄清楚如何解释产生式中的 ~
符号:
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 系统产生式语句,使用 ~
符号表示根据后面的符号显示相关表面~
。