问题标签 [fractals]

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 回答
591 浏览

artificial-intelligence - Mandelbrot 集的遗传编程

我正在阅读这本引人入胜的书中的一章,内容是关于使用遗传编程交互式进化图像。大多数函数集由简单的算术和三角函数组成(真正操作并返回图像)。这些函数构成了对我们的图像进行编码的解析树的内部节点。树的叶子或终端值是随机数和 x,y 坐标。

有一节关于将复平面的迭代函数添加到函数集:

假设遗传学将一个特定的 Mandelbrot 集作为节点插入到浓密的树的某处。该函数需要两个参数:mandel(cReal, cImag),将它们视为复平面中的实坐标和虚坐标。如果基因组恰好提供了像素坐标 (x,y),并且 mandel() 是根节点,那么您将得到熟悉的 Mset。但是很可能 cReal 和 cImag 本身就是整个函数分支的结果,许多坐标 x,y 的实例散布在叶子之间。进入迭代循环,绕一圈,最后用一些距离 Mset 吸引子的距离来衡量,比如迭代次数。

我的问题是如何将 Mandelbrot 集渲染器作为一个函数,将复平面上点的实坐标和虚坐标作为参数并返回 Mandelbrot 集的渲染?

0 投票
2 回答
1510 浏览

opengl - 在 OpenGL 中使用谢尔宾斯基垫片的分形山脉

我正在读一本关于 OpenGL 的书,Edward Angel 的“交互式计算机图形学”。在其中,他要求您修改谢尔宾斯基垫片算法以产生分形山。为此,它说要找到每条边的中点,然后在细分之前扰乱这个位置。他根本没有解释如何“扰乱”该位置,并且在网上查看没有任何结果。

谁能解释这意味着什么?

谢谢!

0 投票
2 回答
818 浏览

php - PHP GD 雪花分形

如何使用 php gd 制作Koch Snowflake Fractal以使其像这样出现......


替代文字

替代文字


可能吗?我可以使用其他资源吗?

0 投票
1 回答
614 浏览

database-design - 在数据库中存储 Mandelbrot 值的最佳方法可能是什么?

我目前正在尝试渲染一个 Mandelbrot 集,我很快意识到不必重新计算每次渲染的最大迭代次数会很有用……另一方面,需要跟踪大量数据的。在我看来(基于我对 RDMS 的有限经验)关系数据库可能不是要走的路,因为我不希望随着数据集变大而影响性能。对于哈希表来说,这似乎是完美的情况,但我以前从未使用过,而且似乎无法弄清楚如何使用或管理其中一种现有的 Web 服务器语言(Python/PHP/whatever)。

更明确一点:要存储的重要值是:

  • 复平面上数的原实部
  • 复平面上数的原虚部
  • 最大迭代次数
  • 在达到最大迭代之前或直到该点运行到无穷大之前完成的迭代次数 n
  • n次迭代后复平面上数的最终实部
  • n次迭代后复平面上数的最后虚部

在任何给定时间,给定原始实部原始虚部最大迭代次数,我希望能够获得包含最终实部和虚部的结果集。

所以你怎么看?哈希表是要走的路吗?对于普通的数据结构来说,问题是否过于复杂?

任何帮助都将不胜感激。提前致谢!

编辑

应朱莉诺伯特的请求,我将稍微解释一下这个问题。

我的目标是允许用户在没有计算延迟的情况下放大 Mandelbrot 集(即使它是通过预定义的缩放)。我还希望能够在不断向服务器询问新数据数组的浏览器中执行此操作,并提供新的 x 和 y 坐标以及要在复平面上查看的高度和宽度。然而,由于计算像素颜色值可以更快地完成(给定 max_iter、real_final 和 imag_final),而且因为允许用户调整颜色设置会很好,所以我将只发送浏览器我的帖子中列举的变量,让用户的浏览器计算颜色。

看看这个:

http://jsfiddle.net/xfF3f/

如果您查看 drawMandelbrot() 函数,您会发现点循环将重要值存储在名为 dataset 的变量中。然后在 drawMandelbrotFromData() 函数中使用该变量,在该函数中执行剩余的计算来计算每个像素的颜色。

如果您单击“cleardabrot”,它将用白色矩形替换画布。如果您单击“refilldabrot”,它会再次运行 drawMandelbrotFromData() 函数...这样做是为了向您展示如果它不必执行痛苦的迭代计算,它实际渲染集合的速度有多快。

所以这里的最终目标是能够以任意精度计算这些值,因此用户可以缩放到集合的任何级别,让服务器确定这些精确点是否有任何数据(或者,最好是点 NEAR那些确切的点......虽然我不确定如何在不执行某种范围查询的情况下做到这一点),然后逐个像素地吐出信息。例如...

  • 用户正在使用 300x300 画布。
  • 他放大到左上角为x = .000001和的点y = .0000231
  • 他在这个框架中选择的宽度和高度w = .00045h = .00045

他会将这些数字发送到服务器,然后接收一个包含 300*300 索引(一个代表每个点)的数组,每个索引都包含确定画布上每个像素颜色的必要信息。我的问题是......存储预先计算的 Mandelbrot 数据的最佳方法是什么,以便用户可以输入任意 x、y、w 和 h 值并快速拉回复平面上的点的值范围。

0 投票
1 回答
2322 浏览

php - 分形解释

一段时间以来,我一直对分形、它们背后的数学以及它们可以产生的视觉效果很感兴趣。

我只是无法真正弄清楚如何将数学公式映射到绘制图片的一段代码。
给定 mandelbrot 集的这个公式:Pc(z) = z * z + c
与以下代码相比如何:

代码不完整,为简洁起见仅显示主要迭代部分。

所以问题是:有人可以向我解释一下数学与代码的比较吗?

编辑:为了清楚起见,我找到了几十个解释数学的资源,以及几十个显示代码的资源,但我找不到对两者结合的很好的解释。

0 投票
3 回答
2297 浏览

opengl - 分形的连续着色

我正在尝试使用 OpenGL 可视化 Mandelbrot 集,并且在平滑着色方面发现了非常奇怪的行为。

让我们假设,对于当前的复数值,算法在被证明大于 2 的迭代C后已经逃逸。nZ

我编写了这样的着色部分:

问题是,这不能很好地工作。一些平滑是显而易见的,但并不完美。

但是当我添加两个额外的迭代时(只是在没有解释的地方发现了这个)

在计算颜色之前的“else”-分支中,图像出来是绝对的、优雅的平滑。

为什么会这样?为什么我们需要在检查点在集合后在着色部分放置额外的迭代?

0 投票
6 回答
2420 浏览

java - 使用递归构建直角三角形

我有这个需要打印星号来绘制三角形的作业。

当drawTriangle(0);

当drawTriangle(1);

当drawTriangle(2);

当 drawTriangle(3);

当 drawTriangle(4);

当drawTriangle(5);

任何建议将被认真考虑。干杯。

0 投票
2 回答
3518 浏览

opengl - 程序行星、高度图和纹理

我目前正在开发一个 OpenGL 程序行星生成器。我希望将它用于太空 RPG,不会让玩家下到行星表面,所以我忽略了任何与 ROAM 相关的内容。目前,我正在绘制一个带有 VBO 的立方体并映射到一个球体上,如此处所示

我熟悉大多数分形高度图生成技术,并且已经实现了我自己的中点位移版本(我知道在这种情况下没那么有用)。

我的问题是,程序生成高度图的最佳方法是什么。我查看了libnoise,它允许我制作可平铺的高度图/纹理,但据我所知,我需要生成一个像这样的网络:

这

让瓷砖明显。

谁能告诉我最好的路线?

任何输入将不胜感激。

谢谢,

亨利。

0 投票
4 回答
6380 浏览

opengl - 有没有人有关于地形的 3D 程序生成或分形地形生成的良好资源?

见标题。任何帮助表示赞赏!

0 投票
1 回答
669 浏览

flash - 谢尔宾斯基三角形 AS3 问题

我正在尝试在 AS3 上编写 sierpinski 三角形,但看起来我缺少一些东西。我被困在这行代码中并试图解决问题所在。我进行了计算,但似乎缺少一些东西。可以你帮忙?