问题标签 [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.
algorithm - 是否有将 L 系统转换为迭代函数系统的已知算法?
问题陈述如下:
“给定一个具有字母集、公理、一组重写规则和一组与字母集双射的几何规则的 L 系统,我们如何找到等效的迭代函数系统 (IFS) 变换集(其中包括但不穷尽——平移、旋转和缩放)?”
粗略地说,L-System 是一个字符重写系统,您从一个初始字符串(公理)开始,然后根据重写规则继续更改字符。为了给它一个几何解释,您可以关联一个绘图元素并为您提供图表。
这是一个使用 Turtle 生成 Koch 曲线的 L 系统的 Python 实现。
IFS 是一组收缩映射或变换,它们将一个点带到另一个点并尝试逼近变换的吸引子集。
此处给出了生成科赫曲线的 IFS 的 python 实现。它使用枕头库表示为图片。
经过一周的研究,我们得出以下结论:
- 给定一个具有一组绘制规则的 L 系统,这样的一组变换总是存在的。
但这除了证明存在之外对我们没有帮助。
我们在 python 中分别对 L-Systems 和 IFS 进行了编码以生成相同的分形,但两者之间的关系仍不清楚。
给定具有绘图规则的 L 系统,是否可以生成一种算法来了解(或生成)IFS?如果是,是否已经完成?它是什么?如果不是,为什么不可能?
python - 为什么这个 L 系统代码不返回字符串?
我正在尝试编写一个程序,该程序接受一个字符串并用其他字符串替换某些字符。(A->AB) 和 (B->A) 在这种情况下。当我运行它时,我希望返回最终的字符串,但没有返回任何内容。
在这个例子中,我希望种子“AB”产生字符串“ABA”,但是没有任何东西返回到控制台。为什么是这样?提前致谢!- 伊莱
编辑:程序编译并且不会产生任何错误。
python - 为什么这个 L-System 只画一条直线?
我正在尝试编写一个生成字符串的程序,然后根据字符串中的下一个字符绘制某些行。我相信它可以正确生成字符串,因为我已经手动检查了几次迭代,但是我使用的海龟似乎无法正常工作。
例如,下面的代码应该生成谢尔宾斯基三角形,但只画一条直线。
我已经检查过其他 L 系统(例如龙曲线),虽然它没有产生水平线,但结果仍然不正确。字符串似乎是正确的,所以我认为问题在于海龟模块如何解释我的指令。这是我第一次使用该模块,所以如果我遇到了一些非常基本的错误,我不会感到惊讶。
和以前一样,这个例子应该产生谢尔宾斯基三角形,但只产生一条水平线。
作为我认为不值得发表的最后一个快速问题,海龟文档说 speed("fastest") 应该删除所有动画,但事实并非如此,有什么想法吗?谢谢大家的时间!
编辑:我已经用用户建议更新了代码,虽然这为三角形提供了正确的结果,但它仍然为龙曲线提供了不正确的图像。龙曲线的信息是
"变量 : XY 常数 : F + − start : FX 规则 : (X → X+YF+), (Y → −FX−Y) 角度 : 90° 这里,F 表示“向前拉”,- 表示“左转 90° ”,+表示“右转90°”。X和Y不对应任何绘制动作,仅用于控制曲线的演变。
python - 为什么我的程序没有生成龙曲线?
我编写了一个使用 L 系统绘制分形的程序。它似乎适用于谢尔宾斯基三角形,但不适用于龙曲线。
我知道网站上有一些关于使用海龟图形创建龙曲线的问题,但它们似乎都不是特别适用,所以我打开了我自己的问题。作为海龟指令,我的代码生成的字符串似乎是正确的。我认为问题在于海龟如何解释该字符串。为什么它应该适用于谢尔宾斯基三角形而不适用于龙曲线令人费解,这让我认为我输入的规则是错误的,但是我检查了多个来源,它们似乎是正确的。
我希望看到龙曲线,但是该程序只会产生由线条和框组成的波浪曲线。
java - 带有L系统的龙曲线在java中使用递归
我想用 L 系统使用递归在 java 中计算龙曲线直到 n = 10。例如,
如何使用递归在 java 中完成相同的任务?我只对了解递归方法感兴趣。
procedural-generation - L系统中长度因子的适当用法是什么?
我刚从程序生成开始,我已经制作了一个程序,通过关注Paul Bourke 的网站,使用 D0L 系统生成行。前两个简单的例子效果很好,但是当我输入L-System Leaf的规则时,我的结果是不正确的,正如这张图片所示。
你们中的任何一个更有经验的人能指出我可能出错的地方吗?我很确定我对长度因子的使用有误解。在我的情况下,lengthFactor
是一个静态浮点数,在生成开始之前设置一次,用于在当前绘图状态下乘/除线的长度。lenghFactor
本身不会在一代中改变。
我正在使用 OpenGL 在 C++ 中进行渲染和编程。
postscript - 为什么这个后记代码没有绘制任何东西?
为什么它不起作用?我尝试使用 mac OS 的默认 pdf 查看器运行它,它说它无法将此 eps 文件转换为 pdf(通常可以)。
这段代码分为三部分,第一部分是定义海龟操作的地方。我们希望这个文件允许我们在屏幕上绘制东西。
该文件的第二部分是我指定要绘制的内容的地方。它基于指定的 L 系统的规则。
文件的第三部分是我们要求绘制的地方
它通常应该画一个hexamaze。
algorithm - 应该如何解释 ~ 以重写植物算法美中 L 系统语法中的模块?
在 The Algorithmic Beauty of Plants中,有一个示例参数 L 系统(第 69 页)显示了番红花的模型:
我还不能完全弄清楚如何解释~
生产中的符号:
p1: a(t) : t<Ta --> F(1)[&(30)~L(0)]/(137.5)a(t+1)
上面描述的文字如下:
生产 p1 描述了由植物顶点 a 产生的连续节间 F 和叶 L。叶子从茎部以 30° 的角度分枝,并围绕主轴旋转,发散角等于 137.5°。
&
意思是“弯下腰”/
意思是“向右滚动”[
意味着开始一个新的分支,保存状态]
表示跳回之前的保存状态
我知道它打算表示一个螺旋或扭曲的运动 - 但目前尚不清楚这是否是“移动一点”或呈现多个连续操作的东西,在重写中抛出了许多额外的元素。
我翻遍了Algorithmic Botany的用户手册,但没有找到任何关于生产最终结果的参考资料。上面的图像似乎显示了相反两侧的叶子,当它们向上推进时,它们会盘旋。如果这只是“扭曲了一下并扔出一片叶子”,我希望只看到一片叶子,而不是一对。
生产 3 中使用了相同的符号,它也以螺旋形式显示花瓣:
p3 : A : * --> ~K(0)
任何人都可以阐明我所缺少的东西吗?