问题标签 [l-systems]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何让乌龟记住它在 L 系统中的位置?
我们刚刚开始在 uni 编程。我们的任务之一是在 Python 中使用带有海龟的 L 系统创建分形树。这个:
代码:
如您所见,它很混乱。我想知道如何让乌龟记住它的位置和标题“[”,然后再返回它“]”。
我对此真的很陌生,所以请以清晰易懂的方式回答。
recursion - 从 L-Systems 生产规则(理论)写(翻译)到 Python 的海龟图形(实践)
问题是我真的不知道如何开始编写代码。我需要一个起点。我确实知道如何将重写产生式规则应用于单个参数,例如科赫曲线。当生产规则的数量超过一个时,问题就出现了,例如:
(谢尔宾斯基垫片)
我的问题是:如何将其集成到 python 乌龟脚本中?你如何告诉 python 以递归方式替换 X 组命令?我尝试创建两个程序,一个用于 X,一个用于 F,但我无法正确处理。在示例中,如何将 X 替换为 (F + X + F) 等其他词?有什么直接的方式来翻译这个吗?
我很抱歉,我迷路了,当我想到递归编程和分形元素时,这对我来说仍然很抽象......
提前致谢!
graphics - 找到合适的比例来绘制 L 系统的迭代
我制作了一个 OCaml 程序,它使用他的定义、他的命令解释和迭代在图形窗口上绘制给定 l 系统的表示。绘图是使用海龟图形制作的(海龟可以画一条线,移动到给定点并转动给定角度)。
我遇到的问题是所有线条的尺寸都相同(这就是它需要的尺寸),当我绘制 L 系统时,如果我没有给出正确的线条尺寸,绘图就会像你一样离开图形窗口可以在那张照片上看到。
我知道我可以将绘图移到左侧,但我总是从窗口的中心开始绘图。我需要帮助的是如何为给定的指令序列设置正确的线条大小,例如:我有那个指令列表下图: ACAABAABABACACAACACACACAACAABABACAABAABABACACAACACACACAACAABABACAABAABABACACAACACACACAACAABABACAABAABABACACAACACACACAACAABA。
其中 A 表示:画一条“X”大小的线 B:转 π/2 C:转 -π/2。
我怎样才能找到 X(线的大小)的最佳值,以便使图形保留在图形窗口上。
我发现的唯一解决方案是从给定值(示例 X=20)开始,并尝试使用该值绘制 l 系统,如果它熄灭,然后使用 X/2 再次尝试,直到它工作!
有人有更好的主意吗?
python - Python Order 10 中的龙曲线
为什么我的龙曲线看起来不像龙曲线?
这是python中的实现,顺序为10:
这是订单 10 的样子:
编辑:这是我从订单 1 得到的,具有更大的比例曲线:
arrays - J 和 L 系统
我将创建一个可以从L 系统语法生成字符串的程序。
Astrid Lindenmayer 用于模拟藻类生长的原始 L 系统是:
产生:
这是我自己在J中天真地实现的,如下所示:
分步说明:
以此类推,这是生成 Thue-Morse 序列的 L 系统第四次迭代的结果
这是迄今为止我能做到的最好的。我认为这里的装箱-拆箱方法是不够的。这是我第一次错过 J 中的链表——没有它们,编写语法要困难得多。
我真正在想的是:
a)构建构建最终字符串的那些函数的动名词列表(在我的示例中,这些函数是常量,'AB'"0
但在树建模函数的情况下是海龟图形命令)并唤起(`:6
)它,
或者我能够编码的东西:
b)构建一个合法的J句子字符串,构建最终字符串并执行(".
)它。
但我不确定这些程序是否有效。
- 你能告诉我一个更好的方法吗?
非常感谢任何关于a)和b)的提示和评论!
algorithm - l 系统节点重写示例
这是我在 stackover flow 中的第一篇文章。最近我开始阅读《植物的算法之美》一书,在第 1 章中,他解释了 L 系统。(你可以在这里阅读章节)。
据我了解,有两种类型的 L 系统。边缘重写和节点重写。
边缘重写相对来说非常简单。有一个初始的起始多边形和一个生成器。初始多边形的每条边(边)都将被生成器替换。
但是这个节点重写是很混乱的。从我收集的信息来看,有两个或多个规则,并且每次迭代都将规则中的变量替换为它们的常量对应项。
对于海龟解释,这些是标准规则
因此,请考虑本网站中显示的示例。http://www.selcukergen.net/ncca_lsystems_research/lsystems.html
所以at n=0
(忽略公理中的 X)
它只是F,表示一条向上的直线。
at n=1
用规则替换公理中的 X
F+FF-F+F(再次忽略最后的X)
输出是这个
一个规则的简单示例是可以的。但是在第 25 页的“植物的算法之美”一书中,有一些规则我不知道如何解释。
看到这张图片。
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 时的输出样子
输出绝对不是一条直线,最糟糕的是它有 5 条线,这意味着最终输出方程中应该有 5 个 F。
帮助我理解这个节点重写。在不理解这一点的情况下,我无法进一步阅读这本书。
对不起,很长的帖子,以及前标签中的链接。我不能发布超过 2 个链接。感谢您耐心地从上到下阅读。
image - L系统分形产生的植物图像的图像相似度指数
我已经在那个论坛上阅读了所有关于图像相似度指数的工作人员,但我认为我的主题有点不同,因为我想要比较的图像来自L 系统生成器,正如你在下面看到的那样,很难找到明显的差异。所以我无法决定为我的问题选择哪种方法和软件。
但是,让我们从头开始讲故事。我收集了一些数据,通过测量一些植物(总共 15 个)的分支的角度和长度,我用 L 系统分形方法表示它们,如前所述。
这些图像看起来像上面的图像:
A 厂 B 厂 C厂
到目前为止,我试图使用两种方法找到差异。
1)通过计算这些图像的分形维数,但正如预期的那样,它们都是2
2) 通过计算同一画布中区域覆盖率的百分比。这种情况下的数字显示出一些差异,但没有统计学意义。
所以我的想法是使用其他相似性索引,但是那里有太多的协议和想法,我找不到起点。我读过关于 OPENCV 、 VisualCI 等的信息,但因为我再也没有使用过这些方法,所以我感到不知何故迷失了方向。
欢迎您提出任何建议。
谢谢你。
java - 在 L 系统的处理中将 Pvector 点连接到网格中?
我已经使用toxiclib 在Processing 中构建了这个L 系统,我想将每个指定的点连接到树分支中的每个交叉点。我写了一个单独的草图,我试图通过连接三个最近的点来创建一个三角形网格,我已经能够连接三个点,但我希望它能够通过数组列表中的所有顶点然后连接三个最近的点,直到我从数组中的所有顶点中得到一个网格。我还需要能够将整个草图转换为一个函数,我可以将它输入到我的 L 系统中,然后它将返回整个系统,所有点都连接起来以创建网格。从本质上讲,这样我就可以纹理化,如果可能的话,可能会对其应用着色器。我认为我可能正在尝试一种更难的方法来解决这个问题,因为我相信toxiclibs 或 HEMESH 库可以为我完成所有这些,但我一直无法弄清楚。任何帮助将非常感激。
这是我为尝试将所有点连接到网格中而编写的草图的代码。
L 系统也是按照本教程创建的:https ://www.youtube.com/watch?v=qF8LGLVrwfo
algorithm - 如何在处理中创建一个简单的 l 系统
我想在处理中创建一个简单的 l 系统。我想将每个字母“A”更改为“AB”,将每个字母“B”更改为“A”,从“A”开始。
结果应如下所示:
(PS我对加工了解不多)