您将如何不断改进曼德布罗分形?

Gig*_*egs 3 math fractals mandelbrot

我见过许多 mandelbrot 图像生成器绘制 mandelbrot 的低分辨率分形,然后不断改进分形。这是平铺算法吗?这是一个例子:http : //neave.com/fractal/

更新:我发现这个关于递归细分和计算 mandelbrot:http://www.metabit.org/~rfigura/figura-fractal/math.html。也许可以使用 kd-tree 来细分图像?

更新 2:http : //randomascii.wordpress.com/2011/08/13/faster-fractals-through-algebra/ 更新 3:http : //www.fractalforums.com/programming/mandelbrot-exterior-optimization/15/

Bru*_*son 6

Fractal eXtreme 的作者和此处问题中链接的 randomascii 博客文章。

Fractal eXtreme 做了一些事情来逐渐改善分形图像:

  1. 从中间开始,而不是从顶部开始。这是许多早期分形程序忽略的微不足道的变化。中心应该是用户最关心的区域。这可以从中心线开始,也可以螺旋向外。螺旋输出有更多的开销,所以我只在计算密集的图像上使用它。
  2. 使用 8x8 块(计算 64 个像素中的一个像素)进行初始低分辨率传递。这给出了一个粗略的初始视图,在 4x4、2x2 和 1x1 分辨率下逐渐细化。请注意,每次通过的像素是之前所有通过的像素的三倍——不要重新计算原始点。随后的传球也从中心开始,因为那更重要。
  3. 多遍方法非常适合猜测。如果两行中的四个像素具有相同的值,则中间的像素可能具有相同的值,因此不要计算它们。这在某些图像上非常有效。最后的清理过程以查找计算错误的像素是必要的,通常会发现一些错误,但在清理过程之后我从未见过可见的错误,这可以提供 10 倍以上的加速。可以禁用此功能。可以在状态窗口中查看此功能的成功(猜测百分比)。
  4. 放大时(双击放大倍数)可以将之前计算的像素作为起点,这样只需要计算四分之三的像素。当所需的精度增加但这些不连续性很少见时,这不起作用。

更复杂的算法绝对是可能的。例如,曲线跟随。

拥有快速数学也有帮助。FX 中的高精度例程是使用 64 位乘法的完全展开的汇编语言(由 C# 代码生成)。

FX 还对两个最大灯泡内的点进行了一些检查,以避免计算它们。它还监视计算中的周期——如果出现完全相同的点,则计算将重复。

要查看此操作,请访问http://www.cygnus-software.com/