将迭代控件添加到Mandelbrot

本文关键字:Mandelbrot 添加 控件 迭代 | 更新日期: 2023-09-27 18:29:47

我已经计算出当前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++;
        }
}

将迭代控件添加到Mandelbrot

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

通过在一定数量的迭代中中断,您已经"深入"了一段时间(因为x1y1很大),然后中途停止。

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

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

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

通常,这个最大值至少是100左右,这足以给你一个集合的基本形状。对于高缩放因子下的精细细节,这可以是数千次迭代中的10次或100次。

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

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

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