C# 将迭代控制添加到Mandelbrot

C# 将迭代控制添加到Mandelbrot,c#,winforms,mandelbrot,C#,Winforms,Mandelbrot,我计算了当前的Mandelbrot迭代208200次。但是,如果我使用中断来控制迭代,它的输出有点像打印机在中途用完了墨水,所以我显然没有正确地执行它,有人知道迭代控制应该如何实现吗 int iterations = 0; for (x = 0; x < x1; x ++) { for (y = 0; y < y1; y++) { // PAINT CONTROLS HERE if (i

我计算了当前的Mandelbrot迭代208200次。但是,如果我使用中断来控制迭代,它的输出有点像打印机在中途用完了墨水,所以我显然没有正确地执行它,有人知道迭代控制应该如何实现吗

 int iterations = 0;

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

            // PAINT CONTROLS HERE

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

        }
}
int迭代次数=0;
对于(x=0;x200000)
{
打破
}
迭代++;
}
}

您需要更改
y1
x1
的值来控制Mandelbrot集合的“深度”


通过在一定次数的迭代中中断,您已经“深入”了一段时间(因为
x1
y1
都很大),然后只是中途停止。

不清楚您在问什么。但对“迭代”有两种最明显的解释:

1) 您的意思是减少每个像素的最大迭代次数。我不会说这会影响结果图像的“平滑度”,但“平滑度”在一开始并不是一个定义良好的技术术语,所以可能这就是你的意思。这当然更符合Mandelbrot集合的可视化方式

如果这是您想要的意思,那么在每像素循环中(代码示例中未包含该循环),您需要将每个像素的迭代计数重置为0,然后在达到所选最大值时停止迭代。在像素的迭代值之前达到最大值的像素在集合中

通常,该最大值至少为100左右,这足以为您提供集合的基本形状。对于高缩放因子下的精细细节,可以在10或100的数千次迭代中进行

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

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


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

我已经编辑了您的标题。请参阅“”,其中的共识是“不,他们不应该”。