这是我在 stackover flow 中的第一篇文章。最近我开始阅读《植物的算法之美》一书,在第 1 章中,他解释了 L 系统。(你可以在这里阅读章节)。
据我了解,有两种类型的 L 系统。边缘重写和节点重写。
边缘重写相对来说非常简单。有一个初始的起始多边形和一个生成器。初始多边形的每条边(边)都将被生成器替换。
但是这个节点重写是很混乱的。从我收集的信息来看,有两个或多个规则,并且每次迭代都将规则中的变量替换为它们的常量对应项。
对于海龟解释,这些是标准规则
F : Move turtle forward in current direction (initial direction is up)
+ : rotate turtle clock wise
- : rotate turtle anti clock wise
[ : Push the current state of the turtle onto a pushdown operations stack.
The information saved on the stack contains the turtle’s position and orientation,
and possibly other attributes such as the color and width of lines being drawn.
] : Pop a state from the stack and make it the current state of the turtle
因此,请考虑本网站中显示的示例。http://www.selcukergen.net/ncca_lsystems_research/lsystems.html
Axiom : FX
Rule : X= +F-F-F+FX
Angle : 45
所以at n=0
(忽略公理中的 X)
它只是F,表示一条向上的直线。
at n=1
用规则替换公理中的 X
F+FF-F+F(再次忽略最后的X)
输出是这个
http://www.selcukergen.net/ncca_lsystems_research/images/noderewrite.jpg
一个规则的简单示例是可以的。但是在第 25 页的“植物的算法之美”一书中,有一些规则我不知道如何解释。
X
X = F[+X]F[-X]+X
F = FF
看到这张图片。
https://lh6.googleusercontent.com/g3aPb1SQpvnzvDttsiiBgiUflrj7R2V29-D60IDahJs=w195-h344-no
at n=0
只是'X'。不知道这意味着什么
at n=1
应用规则 1 (X->F[+X]F[-X]+X): F[+]F[-]+ 忽略所有 X。这只是一条直线。
应用规则 2 (F->FF):FF[+]FF[-]。这只是一条直线。
据我了解,最终输出应该是乌龟向上移动四次。或者最多最终输出应该只包含四行。
我找到了一个在线L 系统生成器,我认为它可以帮助我更好地理解这一点,所以我输入了相同的值,这是 n=1 时的输出样子
https://lh6.googleusercontent.com/-mj7x0OzoPk4/VK-oMHJsCMI/AAAAAAAAD3o/Qlk_02_goAU/w526-h851-no/Capture%2B2.PNG
输出绝对不是一条直线,最糟糕的是它有 5 条线,这意味着最终输出方程中应该有 5 个 F。
帮助我理解这个节点重写。在不理解这一点的情况下,我无法进一步阅读这本书。
对不起,很长的帖子,以及前标签中的链接。我不能发布超过 2 个链接。感谢您耐心地从上到下阅读。