问题标签 [mandelbrot]

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

c++ - 确定 mandelbrot 缩放的坐标

我有一个想要放大的 mandelbrot 集。mandelbrot 是围绕中心坐标、mandelbrot 大小和缩放级别计算的。原始 mandelbrot 以 real=-0.6 和 im=0.4 为中心,real 和 im 的大小均为 2。

我希望能够单击图像中的一个点并计算一个新的点,并在该点周围放大

包含它的窗口是800x800px,所以我想这会使右下角的点击等于real=0.4和im=-0.6的中心,左上角的点击是real=-1.6和im =1.4

我用以下方法计算它:
对于实际值
800a+b=0.4 => a=0.0025
0a+b=-1.6 => b=-1.6

对于虚数
800c+d=-0.6 => c=-0.0025
0c+d=1.4 => d=1.4

但是,如果我继续使用 2 的 mandelbrot 大小和 2 的缩放级别,这将不起作用。我是否遗漏了有关缩放级别坐标的内容?

0 投票
1 回答
1265 浏览

c - 如何修复关于 Mandelbrot 集的 Pthreads 代码?

我有以下关于计算和创建 Mandelbrot 集的图片的 Pthreads 代码。我的 C 代码工作得很好,它很好地打印了结果图片。关键是使用下面的代码,我能够编译代码并执行它。之后,如果我尝试在 Gimp 中查看生成的 .ppm 文件,它根本无法打开它。我想我在代码中做错了什么。如果有人可以帮助我,我会很高兴。

0 投票
1 回答
225 浏览

c - MandelBrot 集应用中的 C X11 分段错误

我一辈子都找不到这个段错误。一旦我启动,它就会不断发生在从属进程上。我已经开发了一个可以完美运行的标准应用程序,但是当我尝试实现缩放功能时遇到了这个问题。

任何帮助是极大的赞赏。

我的部分代码:

0 投票
1 回答
416 浏览

c - Zoom MandelBrot Set

My calculations seem to be moving the image around more than scaling it. Not quite sure where I'm going wrong. I thought I followed the other post on here correctly but it's not quite right.

0 投票
1 回答
2134 浏览

c# - Mandelbrot 算法 - 背景颜色

我正在用 C# 编写一个 Mandelbrot 应用程序(并且我正在使用 Python 进行测试)。我已经有了从集合到边界的连续着色。我目前的问题是设置环境的背景颜色。我当前用于获取颜色的代码现在看起来像这样,它将颜色设为双倍(对数函数之前完成)并检查它是否是一部分并创建一个非常平滑的渐变(从黑色到橙色)。

如何将黑色环境(不是 Mandelbrot 集)更改为另一种颜色,如混淆 Python 脚本(http://preshing.com/20110926/high-resolution-mandelbrot-in-obfuscated-python)呢?我已经将脚本编辑为更好的形式,但它不适合我的算法。

编辑:忘了提,我没有使用一个类来进行复杂的引用,我使用维基百科上显示的算法计算分形。

0 投票
4 回答
24709 浏览

c++ - 在维基百科中使用哪种颜色渐变为曼德布罗着色?

在 Wikipedia 的Mandelbrot 集页面上,有非常漂亮的 Mandelbrot 集生成图像。

细节曼德布罗

我也刚刚实现了我自己的 Mandelbrot 算法。给定n用于计算每个像素的迭代次数,我将它们从黑色到绿色再到白色的颜色非常简单(使用 C++ 和 Qt 5.0):

我的结果是这样的:

在此处输入图像描述

我已经非常喜欢它了,但是维基百科中的图像使用哪种颜色渐变?如何用给定n的迭代计算梯度?

(这个问题与平滑无关。)

0 投票
3 回答
6287 浏览

c# - 让 C# mandelbrot 绘图更高效

首先,我知道这个问题听起来真的好像我没有搜索,但我做了很多。

我为 C# 编写了一个小的 Mandelbrot 绘图代码,它基本上是一个带有 PictureBox 的 Windows 窗体,我在其上绘制了 Mandelbrot 集。

我的问题是,它很慢。如果没有深度缩放,它会做得很好,并且移动和缩放非常流畅,每张图只需不到一秒钟的时间,但是一旦我开始放大一点并到达需要更多计算的地方,它就会变得非常慢。

在其他 Mandelbrot 应用程序中,我的计算机在我的应用程序中运行速度慢得多的地方运行得非常好,所以我猜我可以做很多事情来提高速度。

我做了以下事情来优化它:

  • 我没有在位图对象上使用 SetPixel GetPixel 方法,而是使用 LockBits 方法直接写入内存,这使事情变得更快。

  • 我没有使用复数对象(使用我自己创建的类,而不是内置类),而是使用 2 个变量 re 和 im 来模拟复数。这样做让我减少了乘法,因为对实部和虚部求平方是在计算过程中完成的几次,所以我只是将平方保存在一个变量中并重用结果而无需重新计算它。

  • 我使用 4 个线程来绘制 Mandelbrot,每个线程执行图像的不同四分之一,并且它们都同时工作。据我了解,这意味着我的 CPU 将使用其 4 个内核来绘制图像。

  • 我使用 Escape Time 算法,据我所知,这是最快的?

这是我在像素之间移动和计算的方式,它被注释掉了,所以我希望它是可以理解的:

我能做些什么来改善这一点?您在我的代码中发现任何明显的优化问题吗?

现在有两种方法我知道我可以改进它:

  1. 我需要对数字使用不同的类型,double 的准确性受到限制,我确信有更好的非内置替代类型更快(它们乘法和加法更快)并且具有更高的准确性,我只需要有人来指出我需要看的地方并告诉我这是不是真的。

  2. 我可以将处理转移到 GPU。我不知道如何做到这一点(也许是OpenGL?DirectX?它甚至那么简单还是我需要学习很多东西?)。如果有人可以向我发送有关此主题的适当教程的链接,或者总体上告诉我,那就太好了。

非常感谢您阅读这么远,希望您能帮助我:)

0 投票
1 回答
346 浏览

haskell - Haskell - Mandelbrot 抽屉中的问题

所以,作为一个初学者,我想我会做一个非常可怕的曼德布罗布景项目。在这个可怜的例子中,这个集合是用文本(Shreik!)绘制到一个文本文件中的。因为我想要一些数字编码的练习,所以我设计了现有的最糟糕的复数系统。我无法在代码中发现问题 - 绘制带而不是曼德布罗集的问题。在这里(不要看太久,否则你可能会因过度暴露于noob-ioactivity而死):

正如您所看到的(或者如果您没有看到),我的复数有一些未使用的函数。医生有希望吗?

摘要
为什么这会画一个乐队而不是曼德布罗集?

0 投票
1 回答
116 浏览

optimization - 优化分形可视化方法的建议

我已经写了一个关于 Melinda Green 的 Buddhabrot 方法的变体,用于可视化 Mandelbrot 集。这里是:

http://pastebin.com/RH6dD77F

为了创建动画,我渲染了数百张带有细微变化的单独图像。变化是生成函数的系数的变换,就好像它们是系数空间中的抽象向量一样。所有这些都在视频中产生了令人难以置信的结构......

http://www.youtube.com/watch?v=S2uMAvL_5Fo

问题?如您所知,每张图像的质量相当低,因为使用我想出的方法需要很长时间(我电脑上的副本质量要好一些,但看起来仍然像旧的卷轴到卷轴电影) . 我希望找到一些提高质量或降低输出时间的方法。

感谢您的任何建议。我真的很想制作这些更详细的版本。显然,这些图像的颗粒感有更多的结构。

0 投票
0 回答
435 浏览

performance - 将线程从 2 增加到 3 不会增加 mandelbrot 的加速量

我正在使用具有 4 个内核和 4 个线程的 Intel i5 处理器。目前我正在使用 pthreads 和 ISPC(英特尔 SPMD 程序编译器)模拟 mandelbrot 集。当我使用两个线程来计算 mandelbrot 集图像时,基于任务划分,即图像的空间分解,我看到 1.9 倍的速度,当我使用 3 个线程时,我看到 1.65 倍的加速,4 个线程加速到 2.4 倍。由于 i5 有 4 个线程,因此在程序中(使用 pthread)具有足够的并行性,预计速度会提高 4 倍。为什么使用 3 个线程时速度会下降?我没有看到预期加速的原因是什么?在 mandelbrot 的情况下,有哪些方法可以通过充足的并行性获得更高的速度?

注意:我使用 gcc 将 pthreads 作为 API 进行编译。该划分基于图像的空间分解。我没有使用任何锁或信号量。

mandelbrot 的 wiki 链接 http://en.wikipedia.org/wiki/Mandelbrot_set

ISPC 文档的 github 链接 http://ispc.github.io/

如果您发现这些问题无关紧要,请将我重定向到适当的来源。谢谢您的时间。