2012-02-07 113 views
0

什么使人能够定义变焦过程将会变得多深?
我的意思是说,我早先尝试用200次迭代运行mandelbrot,然后将结果与1000次迭代运行进行比较。结果是有点令人惊讶,因为我得到了相同的缩放级别。整个过程的迭代是不变的,mandelbrot集合是用512X512像素常量定义的。我应该改变什么才能获得更深的缩放级别?
谢谢!为什么不同的Mandelbrot缩放值会产生相同的结果?

编辑:我也想提一提,从美观的画面,之后我到曼德尔布罗的2〜3级的整组被视为一个巨大的像素。这是为什么?

2D编辑:广泛的研究后,我刚注意到,是什么使整套看起来像一个大的像素,因为所有点获得相同的迭代计算,在我的情况下,他们都是60 ......

+0

这会更容易一大堆讨论,如果你想分享你的迭代的代码,所以我们使用相同的术语 - 因为我什至不知道你所说的“曼德尔布罗的水平[S]”是什么意思。 – JimmiTh 2012-02-07 20:21:18

回答

1

这可能太抽象了,或者太具体,或者难以理解。就像我在评论中所说的那样,与您的代码进行讨论会更容易。

如果你的意思我想你通过放大的意思是,你会改变的c边界(公式z[n+1] = z[n]^2 + c中)。

为了解释,全Mandelbrot集包含具有半径2的圆围绕中心[0;0]内。式中的c是复数,即[r;i](实;假想),其在计算机屏幕上,对应于xy

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

然后,我们把我们的图像的每一个点,计算一下它的像素越小,“实际的”坐标系[r;i]方面协调[x;y]对应。然后我们有我们的c,并可以通过我们的迭代发送它。因此,要“缩放”,您需要选择比完整的[-2;2][2:-2](例如, [-1;1][1:-1]

随着512×512像素,以及“实际的”坐标系由2现在2,这将意味着每个像素对应五百十二分之二单位“实际的”坐标系。所以,你的第一个r值是-1,接下来的将是-1 + 2/512 = -0.99609375

迭代只能决定你的渲染的精确程度的数量。一般来说,你进一步“放大”的,更准确,他们会需要是,让更多的迭代,你需要以捕捉细节。

+1

感谢您的回答!但我想我设法解决了这个问题。实际上发生的是我代表我的观点是浮动......所以在几个“缩放”之后,我得到了零精度问题。但现在我面临着CUDA认为Double不支持的新问题。降级浮动。即时使用G105M – 2012-02-07 21:13:54

+0

@准确地说!对于深度缩放,您需要任意的精度算术。 – lhf 2012-02-07 23:24:00

+0

@igalk“少数”的缩放不应该超过单精度浮点数的限制:-)尽管我承认默认情况下浮点数是不精确的,1.8 -1不等于1.7。 – karatedog 2012-04-03 15:03:47