将迭代控制添加到Mandelbrot

时间:2014-11-07 19:20:32

标签: c# winforms mandelbrot

我已经计算出当前的Mandelbrot迭代208,200次。但是,如果我使用一个中断来控制迭代它输出有点像打印机墨水用完了一半,所以我显然没有正确地做,有谁知道应该如何实现迭代控件?

 int iterations = 0;

 for (x = 0; x < x1; x ++)
    {
        for (y = 0; y < y1; y++)
        {

            // PAINT CONTROLS HERE

            if (iterations > 200000)
            {
                break;
            }
            iterations++;

        }
}

2 个答案:

答案 0 :(得分:1)

您需要更改y1x1的值来控制Mandelbrot集的“深度”。

通过打破一定数量的迭代,你已经“深入”了一段时间(因为x1y1很大)然后只是停止了一段时间。

答案 1 :(得分:0)

目前尚不清楚你在问什么。但是对“迭代”采取了两种最明显的解释:

1)您的意思是减少每像素的最大迭代次数。我不会说这会影响所得图像的“平滑度”,但“平滑”并不是一个明确定义的技术术语,所以也许这就是你的意思。这肯定与Mandelbrot集合的可视化更为一致。

如果这是你想要的意思,那么在你的每像素循环中(你没有在你的代码示例中包含),你需要为每个像素重置迭代计数为0,然后在if和when时停止迭代你达到了你所选择的最大值。在像素的迭代值之前达到最大值的像素位于集合中。

通常这个最大值至少为100左右,这足以为您提供该组的基本形状。对于高缩放系数的精细细节,这可以是数十次或数百次迭代中的10次。

2)您的意思是减少实际计算的像素数。对我来说,这会影响图像的“平滑度”,因为生成的图像的分辨率基本上较低。

如果这是您的意思,那么您需要更改计算图像的像素宽度和高度(即使x1y1更小),或更改X和Y步长在循环中,然后使用正确颜色的较大矩形填充图像。

如果没有更好的代码示例,就无法提供更具体的建议。