为什么不同的Mandelbrot缩放值产生相同的结果?

时间:2012-02-07 19:09:22

标签: graphics fractals mandelbrot

是什么让人能够定义缩放过程的深度? 我的意思是,我之前尝试使用200次迭代运行mandelbrot set,然后将结果与1000次迭代运行进行比较。结果有点令人惊讶,因为我得到了相同的缩放级别。迭代在整个过程中是恒定的,并且mandelbrot集定义为512X512像素不变。为了获得更深的缩放级别,我应该改变什么? 谢谢!

编辑:我还想提一下,从漂亮的图片来看,在我到达mandelbrot的第二至第三级之后,整个集合被视为一个巨大的像素。那是为什么?

2d编辑:经过广泛的研究后我才注意到,整个集看起来像是一个大像素是因为所有点都得到相同的迭代次数,在我的情况下它们都是60 ...

1 个答案:

答案 0 :(得分:1)

这可能过于抽象,过于具体或难以理解。就像我在评论中所说的那样,用手边的代码进行讨论会更容易。

如果你的意思是我认为缩放的意思,你就会改变c的边界(在公式z[n+1] = z[n]^2 + c中)。

为了解释,完整的Mandelbrot集包含在围绕中心[0;0]的半径为2的圆内。公式中的c是一个复数,即[r;i](实数;虚数),它在计算机屏幕上对应xy

换句话说,如果我们将半径为2的圆放置在我们的图像中,那么[-2;2]将是我们图片的左上角,[2;-2]就是右下角角。

然后,我们拍摄图像的每个点,根据较小的“实际”坐标系[x;y]计算其像素坐标[r;i]对应的内容。然后我们有c并可以通过我们的迭代发送它。

因此,要“缩放”,您需要选择其他边界[r;i]而不是完整的[-2;2][2:-2],例如[-1;1][1:-1]

对于512x512像素,以及现在为2乘2的“实际”坐标系,这意味着每个像素对应于“实际”坐标系的2/512个单位。因此,您的第一个r值将为-1,下一个值为-1 + 2/512 = -0.99609375等。

迭代次数仅决定渲染的准确程度。通常,您“进一步”缩放,它们需要的越准确,因此捕获细节所需的迭代次数就越多。