问题标签 [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 投票
3 回答
4234 浏览

c++ - 关于 L 系统的信息

我即将为大学启动一个项目,为现有项目建立一个程序城市。

我想知道你们中是否有人以前有过 L-Systems 编码的经验,并且知道一个适合我开始的地方。在使用程序方法和 Perlin Noise 和 fBm 之前,我做了一些工作,所以我得到了分形意义上的 L-System 的前提。我更多的是寻找一个可以推动我向 L-System 编码方向发展的地方。您可以向我指出的任何帮助或技术文档都会很棒。

0 投票
1 回答
2751 浏览

opengl - OpenGL L 系统渲染

我已经让我的基本 L 系统正常工作,我决定尝试优化应用程序的渲染。以前我用开关盒和绘图循环遍历 L-System 的整个字符串。更好的是,我将向您展示我在做什么:

我删除了所有这些,因为我实际上是在每一帧解析树,我更改了这个循环,以便它将所有顶点保存在一个标准向量中。

现在我改变了我的渲染循环,所以我直接从向量数组中读取。

现在我的问题是,当我使用矢量数组并使用 Line Stip 时,我会得到额外的伪影。

第一个图像是未优化的原始渲染,然后第二个是运行更快的新渲染,第三个是龙曲线的渲染,它不使用推送和弹出,就像前两个使用的一样(我很漂亮确保推送和弹出是问题出现的地方)。

我在这里存储顶点的逻辑有问题,还是因为我使用的是线带?我只会使用线条,但它根本不起作用,它最终看起来更像是线条。

也很抱歉这篇文章的长度。

替代文字 http://img197.imageshack.us/img197/8030/bettera.jpg 替代文字 http://img23.imageshack.us/img23/3924/buggyrender.jpg 替代文字 http://img8.imageshack.us/ img8/627/dragoncurve.jpg

0 投票
2 回答
2074 浏览

c++ - 设计 L 系统数据结构 (C++)

我正在尝试为 C++ 中的 L-System 重写引擎的实现设计数据结构,但我似乎无处可去:(。

我需要存储一串符号(字符)。有几种类型的符号(由 LSystem 的字母表指定)。假设我们有类型“A”、“B”、“C”。现在每种类型的符号都可以有不同的参数。例如,类型 A 的符号将具有一定的距离,而符号 B 将具有角度。C 符号没有参数。然后字符串可能看起来像“ABAC”。

然后我需要遍历字符串并执行一些也与每种类型的符号相关的操作。“A”可以表示“画‘距离’长度的线”(距离是A的参数),B“转‘角度’度数”,C完成绘画。

我尝试为每个符号类型(SymbolA 类、SymbolB 类、SymbolC 类)创建类 Symbol 和一个子类,但我不知道如何创建字符串。我想避免类型转换和类似的东西。

请问有人有类似的问题或有可以帮助我的想法吗?

0 投票
1 回答
742 浏览

python - 使用海龟图形恢复 l 系统代码中的记录状态

我正在使用海龟图形来重现 l 系统(TurtleWorld 库)。我尝试应用的规则在不涉及返回之前保存的状态时运行良好,但是只要有 [ 和 ] (参见下面的规则),事情就会中断,乌龟只会随机绘制 bs。

基本上,我认为检查 ']' 存在位置的 IF 语句是代码中断的地方。(另外,我知道它目前没有优化,为了清楚起见,我写了一个可靠的 IF ......)

编辑:新代码 - 这整个计算角度的事情是不必要的,因为我们有 get_heading(),它告诉我们我们所面向的角度。

0 投票
1 回答
4946 浏览

python - Python中的龙曲线

我创建了一个程序来使用海龟图形绘制一条龙曲线。但我的结果看起来并不像链接中的图片那样:

在此处输入图像描述

我注意到的一个问题是我想将生成的字符串保存到变量 newWord.. 但我不能在我的函数 drawit 中使用 newWord 作为参数,它实际上是根据字符串绘制线条。当我尝试这样做时,我收到错误“未定义全局变量 newWord”。所以在我的代码中,我只是复制了要绘制的 newWord 的输出,而没有实际传递我想要传递的变量。

我不确定问题是否出在我的 createWord 函数上,或者我只是在 drawit 中没有“绘制足够”。

0 投票
2 回答
2865 浏览

python - L 系统森林中的重叠树

我使用 python 的海龟图形创建了一个程序,用于模拟森林中的树木生长。有 3 种树图案是随机选择的,它们的起始坐标和角度也是随机选择的。我选择了一些看起来很酷的树图案,但我遇到的问题是许多树是重叠的,所以看起来不像是一片森林,它看起来像一幅糟糕的 5 岁孩子的画。

有没有办法让这种重叠不那么常见?当你看一片森林时,有些树和它们的叶子确实重叠,但它绝对不是这样的:

在此处输入图像描述

由于涉及很多随机化,我不知道如何处理这个问题。

这是我的代码:

0 投票
1 回答
239 浏览

fractals - L-System - 减少新分支的圆柱半径

我有一个由圆柱体制成的简单 3D L 系统,我目前只是检查最终字符串中的每个符号并执行适当的操作,例如绘制、转动、旋转、推动和弹出。我知道 push 和 pop 非常类似于一个新分支,但是我尝试在调用 push 时更改半径,但这会导致奇怪的结果。

有没有人有正确的方法使新的分支变得比以前的分支更细?

谢谢。

0 投票
1 回答
697 浏览

shader - Ogre 渲染 + 顶点着色器

假设我的世界中有一个 3d 对象,如下所示。

http://en.wikipedia.org/wiki/File:Graftal3.png

我还有一个节点存储有关如何绘制的信息,例如......

http://en.wikipedia.org/wiki/File:Graftal4.png

我如何从一个插值到另一个。根据我的研究,我知道我将不得不使用顶点着色器。但困扰我的主要部分是第二个模型比原始图像有更多的顶点。

我希望得到一些关于如何实现这种影响的指导。

谢谢!

0 投票
2 回答
742 浏览

c++ - '迭代器不可取消引用' C++ 堆栈

不知道这里发生了什么。我有一个标准的 Vector3D 堆栈(我的导师给我的一个 3 维矢量类)。我已经将两个 Vector3D 推到堆栈上,但是当我使用 vectorStack.top() 进入顶部时,我遇到了这个非常无用的错误:

调试断言失败!

表达式:deque 迭代器不可取消引用

我认为 Vector3D 复制构造函数可能有问题,但我尝试制作自己的快速 Vector3D 结构(删除给我的旧结构),但这也不起作用!

这是代码:

lsystem 中的堆栈只是stack<Vector3D> vectorStack;

我尝试了多种将 vectorStack.top() 分配给当前位置的方法,但似乎没有任何效果。

为了完整起见,这里是 Vector3D 的构造函数:

编辑:为了证明堆栈中有东西 截屏

这是堆栈中引发错误的行 截图2

0 投票
2 回答
1983 浏览

c++ - 如何使用 C++ 和 L-Systems 在空间中的任何给定点和方向生成 3d 树?

我正在用 C++ 编程一个 3d 场景,其中树木可以在任何点和任何方向“生长”。我发现 L-systems 树/行星看起来非常好,但我无法搜索一些函数或库,这些函数或库可以让我传递点坐标、方向向量和一些其他参数,并返回该“生长”树点集的数组。

我什至无法搜索足够的信息来开始。因此,我可以参考或重复使用并进行一些调整以完成此任务的任何想法或链接。我找到了一些 L-sys 解析器,但它看起来只是在没有控制生长方向的情况下绘制到位,并且也未能给我整个点坐标。