问题标签 [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.
javascript - 如何将 L 系统逻辑应用于段
编辑
这是一个正确应用长度和模型但没有正确定位模型的新版本。我想这可能会有所帮助。
http://codepen.io/pixelass/pen/78f9e97579f99dc4ae0473e33cae27d5?editors=001
我有 2 个画布实例
- 模型
- 结果
在模型视图上,用户可以拖动手柄来修改模型结果视图应该将模型应用于每个段(相对)
这只是分形曲线的基本 l 系统逻辑,尽管我在将模型应用于段时遇到问题。
见下图:红线应该复制模型,但我不知道如何正确应用逻辑
我在这里有一个演示版:http: //codepen.io/pixelass/pen/c4d7650af7ce4901425b326ad7a4b259
ES6
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
需要一个二元运算符。没有单子可以解决这个问题吗?如果是这样,怎么做?
javascript - 在处理 JS 中实现分形工厂时出现“超出最大调用堆栈大小”错误
我正在尝试在处理 javascript 时实现分形植物(最高级别 - 6)。即使满足基本条件,我也会收到“超出最大调用堆栈大小”错误。
这是代码:第一个函数自定义绘制线根据长度、角度和原点绘制线。增量功能将角度增加 25 度。减量功能将角度减小 25 度。
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 我认为它会起作用。
c - 使用 L 系统的 GNU 解析器优化
关于如何使用Lindenmeyer系统方法 (L-System) 通过并行性使 GNU 解析器更快的任何建议。我还需要比较C语言实现L系统时的正常执行时间和执行时间。任何建议都会有所帮助。
python - python乌龟图形中奇怪的L系统
我尝试使用 Python 3 中的海龟模块来重新创建此处找到的分形: https ://en.wikipedia.org/wiki/L-system#Example_7:_Fractal_plant 但每当我尝试它时,它都会给我一个非常奇怪的结果.. .
这是我的代码:
我对所有内容进行了三重检查,似乎没有错误 - 但它仍然无法正常工作。我在做什么大错特错?
提前感谢您的帮助!
c++ - 现代 OpenGL 中的分形树(OpenGL 3.3 及更高版本)
我需要一种使用现代 OpenGL 绘制 3D 分形树的方法。有什么建议么?
我不一定需要完整的源代码,只是知道如何去做。
我想做的是制作一棵3D树。在固定功能的 OpenGL 中,绘制一个好看的逼真的树并不难,但我不知道如何在现代 Opengl 中做到这一点。
我认为为每个分支使用圆柱模型并使用glm
它在正确的位置和大小进行转换是个好主意,因为在这种情况下我可以使用模型的纹理坐标和法线,但我被卡住了,我没有不知道该怎么做。
这是在固定函数 OpenGL 中使用递归制作的分形 2D 树。如果有人感兴趣,我可以发送整个源代码。
如何在现代 OpenGL 中使用 VAO、VBO 和着色器制作这样的东西?
tree - OpenMusic:使用 lisp 生成 L-System 树
我正在尝试使用一个名为 OpenMusic 的作曲工具,它是一个基于通用 lisp 的图形开发环境,它使用一种叫做“节奏树”的东西。我正在尝试使用一组规则创建节奏树,在 OM 中,这棵树必须具有以下结构:
- 树是一个包含两个元素的列表
- 它的第一个元素是节点
- 它的第二个元素是它的孩子列表(也可以是树)
给定一个树的深度n
,一个初始的单节点树(1)
和转换规则:
- (1) -> (1 2)
- (2) -> (1)
它应该给出:
n = 1 -> (1 (1 2))
javascript - 将 SVG“像素”用于视网膜显示器
所以我想做一个这样的工具
http://www.kevs3d.co.uk/dev/lsystems/
这些 l 系统中的每个像素都是有意义的,所以理想情况下,我希望能够平移/缩放,并且希望它在视网膜上看起来不错。
我的想法最初是使用带有单个矩形的 SVG 来表示所有像素的去向。然而,这似乎是一个奇怪的解决方案,我不确定我能期待什么样的性能。
所以我的问题是:有人认为这可行吗?或者任何人都可以提出不同的行动方案吗?