问题标签 [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.

0 投票
1 回答
98 浏览

javascript - 如何将 L 系统逻辑应用于段

编辑
这是一个正确应用长度和模型但没有正确定位模型的新版本。我想这可能会有所帮助。

http://codepen.io/pixelass/pen/78f9e97579f99dc4ae0473e33cae27d5?editors=001


我有 2 个画布实例

  1. 模型
  2. 结果

在模型视图上,用户可以拖动手柄来修改模型结果视图应该将模型应用于每个段(相对)

这只是分形曲线的基本 l 系统逻辑,尽管我在将模型应用于段时遇到问题。

见下图:红线应该复制模型,但我不知道如何正确应用逻辑

我在这里有一个演示版:http: //codepen.io/pixelass/pen/c4d7650af7ce4901425b326ad7a4b259

在此处输入图像描述

ES6

0 投票
2 回答
183 浏览

haskell - 将(可能是一元的)函数递归地应用于自身

我试图在 Haskell https://en.m.wikipedia.org/wiki/L-system中表达一个 L 系统,特别是 Lindenmayer 用于模拟藻类生长的原始 L 系统。

变量:AB
常量:无
公理:A
规则:(A → AB), (B → A)

对我来说,解决这个问题的自然方法是将规则应用于列表中的每个元素,这(对我而言)意味着我可以使用某种类型的字符串替换来模拟解决方案。

例子:

对于“字符”列表 [A, B, A 我们应用规则并得到 [A → AB, B → A, A → AB] = [A, B, A, A, B] (对于这个模型要与 Haskell 一起玩得很好,您必须将 AB 视为一个列表 [A, B],我们将把它与上述规则产生的任何其他结果结合起来)。

我已经生成了下面包含的代码,其中包含数据构造函数,不必处理 A 或 B 以外的其他字符,

上面的代码是这样的,用它自己作为参数调用它会产生预期的结果,即。那

重复的应用程序按预期工作。

我接下来要完成的是让函数递归地应用于自身,但未能表达这一点。我的意思是我希望能够调用该函数,或者调用该函数,或者调用该函数algae [A]algae这需要将类型签名更改为algae :: Alphabet),它会产生一个无限列表,通过将藻类无限次地应用到自身上会收到该列表。

自从我承认失败以来,我查看了http://hackage.haskell.org/package/lindenmayer-0.1.0.0/docs/Lindenmayer-D0L.html但我无法理解代码(还)并且还发现了其他同样令人困惑的实现。

我已尽力尝试使用 usingfolds和该fix功能,但未能成功。我还尝试借鉴其他递归定义,例如

但是这种方法失败了,因为zipWith需要一个二元运算符。没有单子可以解决这个问题吗?如果是这样,怎么做?

0 投票
1 回答
176 浏览

javascript - 在处理 JS 中实现分形工厂时出现“超出最大调用堆栈大小”错误

我正在尝试在处理 javascript 时实现分形植物(最高级别 - 6)。即使满足基本条件,我也会收到“超出最大调用堆栈大小”错误。

这是代码:第一个函数自定义绘制线根据长度、角度和原点绘制线。增量功能将角度增加 25 度。减量功能将角度减小 25 度。

0 投票
1 回答
244 浏览

swift - Swift L 系统藻类

所以这只是我在 IBM Swift 沙箱中的乐趣。我最近在 Scala 中做了一个 L-system algae,虽然在 Swift 中做它来看看语言的比较会很酷。

https://github.com/I2obiN/L-System-Algorithms-and-Fractals/blob/master/algae.scala

那是向你展示我的目标的 Scala,这就是我在 Swift 中所拥有的;

我遇到的问题在于我的映射功能。我需要它来映射 x,打印结果,然后在 str 上执行下一个映射。问题是我在两个地图之间都有运算符 + 并且在第一次操作后我无法快速打印 str 。

有人对如何解决这个问题有任何想法吗?如果我可以在第一次替换后打印 str 我认为它会起作用。

0 投票
1 回答
47 浏览

c - 使用 L 系统的 GNU 解析器优化

关于如何使用Lindenmeyer系统方法 (L-System) 通过并行性使 GNU 解析器更快的任何建议。我还需要比较C语言实现L系统时的正常执行时间和执行时间。任何建议都会有所帮助。

0 投票
2 回答
1041 浏览

python - python乌龟图形中奇怪的L系统

我尝试使用 Python 3 中的海龟模块来重新创建此处找到的分形: https ://en.wikipedia.org/wiki/L-system#Example_7:_Fractal_plant 但每当我尝试它时,它都会给我一个非常奇怪的结果.. .

这是我的代码:

我对所有内容进行了三重检查,似乎没有错误 - 但它仍然无法正常工作。我在做什么大错特错?

提前感谢您的帮助!

0 投票
1 回答
3536 浏览

c++ - 现代 OpenGL 中的分形树(OpenGL 3.3 及更高版本)

我需要一种使用现代 OpenGL 绘制 3D 分形树的方法。有什么建议么?

我不一定需要完整的源代码,只是知道如何去做。

我想做的是制作一棵3D树。在固定功能的 OpenGL 中,绘制一个好看的逼真的树并不难,但我不知道如何在现代 Opengl 中做到这一点。

我认为为每个分支使用圆柱模型并使用glm它在正确的位置和大小进行转换是个好主意,因为在这种情况下我可以使用模型的纹理坐标和法线,但我被卡住了,我没有不知道该怎么做。

这是在固定函数 OpenGL 中使用递归制作的分形 2D 树。如果有人感兴趣,我可以发送整个源代码。

如何在现代 OpenGL 中使用 VAO、VBO 和着色器制作这样的东西?

在此处输入图像描述

0 投票
0 回答
393 浏览

opengl - Lsystem 3d 树,更真实

我尝试使用 Lsystem 在 OpenGL 中实现程序 3d 树。到目前为止,我可以获得以下结果: 在此处输入图像描述

它看起来像一棵树,但我想改进结果,并获得更逼真的树。有人有任何想法来简单地为树添加厚度特征,因为现在它只是一些“棍子”,或者像树叶一样的结构......我想在程序地形渲染中使用它。

先感谢您。

0 投票
1 回答
297 浏览

tree - OpenMusic:使用 lisp 生成 L-System 树

我正在尝试使用一个名为 OpenMusic 的作曲工具,它是一个基于通用 lisp 的图形开发环境,它使用一种叫做“节奏树”的东西。我正在尝试使用一组规则创建节奏树,在 OM 中,这棵树必须具有以下结构:

  • 树是一个包含两个元素的列表
  • 它的第一个元素是节点
  • 它的第二个元素是它的孩子列表(也可以是树)

给定一个树的深度n,一个初始的单节点树(1) 和转换规则:

  • (1) -> (1 2)
  • (2) -> (1)

它应该给出:

n = 1 -> (1 (1 2))

0 投票
0 回答
248 浏览

javascript - 将 SVG“像素”用于视网膜显示器

所以我想做一个这样的工具

http://www.kevs3d.co.uk/dev/lsystems/

这些 l 系统中的每个像素都是有意义的,所以理想情况下,我希望能够平移/缩放,并且希望它在视网膜上看起来不错。

我的想法最初是使用带有单个矩形的 SVG 来表示所有像素的去向。然而,这似乎是一个奇怪的解决方案,我不确定我能期待什么样的性能。

所以我的问题是:有人认为这可行吗?或者任何人都可以提出不同的行动方案吗?