问题标签 [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-Systems 和 Maya 中的堆栈
因此,我了解 L 系统的规则,并设法创建了谢尔宾斯基三角形。我现在开始制作不同风格的树。
其基本规则是:
我正在使用 Maya 来执行此操作,但我不确定如何推送和弹出堆栈。我知道如何使用列表创建基本堆栈,因为 Maya 没有默认堆栈,但我究竟会推送/弹出什么?
我似乎无法推动物体的世界矩阵。而且,如果不先创建对象就无法做某事,L-System 流程就会出错。作为一个基本示例:
...由于未创建要推动/旋转的对象而无法工作。
任何提示都会非常有用,因为这一直困扰着我一段时间。
recursion - 用 L 系统创建谢尔宾斯基金字塔
L-Systems的Wikipedia 页面描述了其中的许多,包括一些趋向于谢尔宾斯基三角形的规则。那个特殊的分形也有一个 3D 版本,它基本上使用金字塔而不是三角形。有没有办法通过 L 系统达到这个目标?同一个维基百科页面提到了 3D L 系统的存在,但没有解释它们是如何工作的,也没有给出任何关于它们的规则是什么样子的例子。
首先,3D L 系统与 2D 对应物有何不同(如果存在重大差异),其次,它们可以用来创建这个谢尔宾斯基金字塔吗?
我正在尝试在 Processing 中创建它,因为我之前设法在这个软件中使用 L 系统绘制了 2D 版本。制作 3D L 系统的示例将不胜感激,但不是必需的
neural-network - L-System输出的神经网络训练?
我正在尝试训练 L 系统输出的鉴别器。它们具有像“F[/F]FF”这样的字符串形式,符号词汇量有限(9 个符号 F0[]tTpP/)
我有一堆输出/布尔对作为数据(l 系统输出字符串,无论这个字符串是否“正确”)。
我想知道我的输入层需要多少个神经元?每个字符串的长度都是可变的,那么输入层也应该缩放吗?
如果您有任何线索,将不胜感激。
谢谢
python - python中的简单L系统
您好,我正在寻找一种在 python 中将简单的 L 系统实现为函数的方法,该函数将采用三个参数:公理、规则和交互次数(如果迭代 = 0 输出将是先前输入公理)。我想出了一些代码,它只适用于 1 次迭代,我不知道如何实现更多。
我想出的代码:
procedural-generation - 具有杂色的现实程序叶生成资源
我知道有很多关于植物等的程序生成的材料,特别是使用 L 系统等。
但是经过快速研究,我一直无法找到任何关于叶子结构的好的/深入的材料。具体来说,虽然我找到了几篇关于叶子形状的文章,但没有找到关于variegation的文章。
是否有关于叶子杂色的真实生成的任何好的/深入的资源?
我希望能够生成如下图所示的叶子:
(我知道这个问题可能会突破一个好的 Stackoverflow 问题的界限,但它在某种意义上是特定的,即要求特定类型的资源(叶子中的杂色)。)
java - 如何仅按需制作 Java GUI 绘制?
我的应用程序旨在使用 L-Systems 绘制一棵树。我从一个公理开始,为下一代应该替换什么提供一个规则。我将 JFrame/JPanel 组合用于一个按钮(将来可能会更多)/JComponent 用于绘图区域。我编写了一个小乌龟图形方法(前进、右转、左转、推动当前变换、弹出变换)。每次单击“生成”按钮时,我都会调用 repaint(),然后再调用 turtleDraw()。
我遇到的第一个问题是,当我运行应用程序时,又调用了 paintComponent()(我认为)的 paint() 已经被调用了两次。这已经很烦人了。我将 setResizable() 设置为 false,因为这会重新绘制窗口。有没有办法解决这个问题,只有当我点击“生成”时才画线?根据我的发现,当应用程序“需要这样做”时,没有实际的方法可以阻止 paint() 被调用,所以也许还有另一种方法来调整代码。
javascript - 我可以使用正则表达式捕获组来防止该组的连续匹配吗?
我写了一个基于正则表达式的 Javascript 解释器。是否可以使用捕获组来防止连续匹配评估任何先前捕获的匹配。
示例:我从一个字符串开始X
。这里有两个替换规则:
X: 'F-[[X]+X]+F[+FX]-X'
F: 'FF'
通过 0:
X
被替换为F-[[X]+X]+F[+FX]-X
. 由于F
不在初始字符串中,因此将被忽略。
pass 1:这里是我想使用捕获组策略的地方。我首先更换了 4 X
s。现在,我如何忽略这些匹配项 - 大概使用捕获组 - 并且只评估字符串的其余部分?
modeling - 中国古典政治秩序愿景的程序建模
我目前正在处理的问题涉及《管子》中描述的系统。这本书的很大一部分是关于政府应该如何从经济中提取盈余,他们可以重新分配这些盈余,以确保现有追随者的忠诚度并获得新的追随者。在这种制度下,谁能够重新分配最多的财富,谁就成为了整体的领导者。然而,他还必须在竞争中胜过系统中的其他人:他们都忙于建立自己的再分配网络。
结果是一系列金字塔形的再分配网络,既独立又嵌套。
这些是跨越时间和空间的动态的。获得资源可以让您获得更多关注者,这反过来又可以让您访问更多资源。还有一个随机因素:收成不好或战争可能会耗尽你的资源。如果一位领导者耗尽了资源(无论是由于灾难还是因为他在追随者之间过于慷慨地重新分配资源),他要么被追随者取代,要么他的网络将崩溃,其成员离开加入其他网络。
我认为可以通过算法对此进行建模。
我们可以假设共享资源的意愿是与生俱来的。
慷慨=倾向得分
个人获得追随者是他拥有的剩余资源和分享这些资源的意愿的函数。
追随者[tn] = 剩余[t-1] * 慷慨
值得注意的是,在这个模型中增长是内生的。它是在给定技术和自然资源 (a) 的情况下被视为现实的任何经济增长系数的产物,以及前一个周期的盈余和个人拥有的追随者数量的产物,基于这些构成生产要素。(注意:我对从中获得实际货币价值不感兴趣,只是对关系进行建模。我知道如果你将真实数字插入其中,人们最终会重新分配比他们拥有的更多的东西。)
增长 = a (剩余[t-1] * 追随者[t-1])
在 T=0 时,系统中每个人享有的盈余必须是随机产生的。
剩余[t0] = 随机生成的数字
追随者为他们的领导者创造了额外的资源,但他们也需要得到报酬,这意味着他们同时消耗了领导者的资源,这与他的慷慨倾向得分成正比。如上所述,还必须包括一个随机分量,以解释饥荒、丰收、战争等。
剩余[tn] = 随机分量(剩余[t-1] + 增长)-(追随者[t-1] * 慷慨)
一旦定义了这些关系,那么算法就相对简单了:
T1: 每个人检查最近没有关注他的人的剩余*慷慨分数。如果个人 A 的 SG > 个人 B 的 SG,则个人 B 靠近个人 A 并成为他的追随者。(注意:如果个人B有自己的追随者,他会随身携带。另外:追随者会在每一轮中自动重新检查他们的领导者的SG,因为他是最接近他们的个人。他们将离开他的网络成为自由球员如果他的 SG 低于他们的 SG 再一次。)
否则,他什么都不做。
T2: 每个人的统计数据(追随者,盈余)根据新情况重新计算。重复步骤 1。
T3: 重复上一步
人们会期望具有最佳慷慨得分的个人建立最大的网络,因为他们在不完全耗尽资源的情况下获得追随者。
我怀疑(但不确定)该模型的特征与 L 系统模型的特征相似。
- 个人被编程为一个简单的指令:“如果离你最近的人的 S*G 分数比你高,请接近并跟随他。”</li>
- 在此基础上,个体形成结构(从具有最佳 S*G 分数的个体的角度来看,它们似乎以半结构化的方式聚集在他周围)
- 这些结构随着每个连续的时间段而增长
- 他们在耗尽自己的资源或随机灾难发生后崩溃。
- 崩溃后,该过程会自动重新开始。
但是,我不是数学或计算机专家(我是中国哲学专家),所以我不确定我是否只是被表面的相似性所愚弄。这是字符串重写的真实例子,还是我只是在说服自己这是因为你从中得到了树状结构?这甚至是一个可以工作的模型吗?我完全搞砸了我的方程式吗?(我从高中起就没有这样做过,所以很有可能。)
我们感激地接受所有帮助。
python - 使用python实现参数L系统
我一直在用 python 实现参数 L 系统。我的案例是一棵二维树,因此我使用的是 python turtle 库。我为一个非参数 L 系统编写了这个简单的代码,它工作得很好。这是我的代码:
问题是这段代码适用于一个简单的非参数 L 系统,但我想在每一步中减小树的直径和长度。我为此编写了两个函数,length_function
但width_function
我不知道在哪里或如何使用它。这是我的 L 系统规则和公理:
的值r1, r2, q, e
是已知的。也是s0 & w0
众所周知的。我不想以字符串格式存储这些参数的值,我希望它们在列表或数组中,但我不知道如何。这是我正在尝试绘制的树与我的代码绘制的图片:
java - 为什么输出错误
我应该得到一棵树。但我没有得到一棵树。我得到了一个很长的东西,而不是一棵树。
这是我的代码:
主.java
TreeDrawer.java
我做错了什么。我不知道如何发布我得到的输出的屏幕截图,但它看起来完全不正确。我知道我的 L 系统算法是正确的,因为它运行良好。但是我认为当我尝试保存和恢复转换状态时,出现了问题。保存转换状态是括号([和]。'['保存,']'从该保存恢复)。但我不知道出了什么问题。我需要帮助找出问题所在。谢谢你。