将迭代控件添加到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++;
}
}
您需要更改y1
和x1
的值来控制Mandelbrot集的"深度"。
通过在一定数量的迭代中中断,您已经"深入"了一段时间(因为x1
和y1
很大),然后中途停止。
不清楚您在问什么。但对"迭代"有两个最明显的解释:
1) 您的意思是减少每个像素的最大迭代次数。我不会说这会影响生成图像的"平滑度",但"平滑"一开始并不是一个定义明确的技术术语,所以这可能就是你的意思。这当然更符合Mandelbrot集的可视化方式。
如果这是你想要的意思,那么在每像素循环中(你的代码示例中没有包括),你需要将每个像素的迭代次数重置为0,然后在达到你选择的最大值时停止迭代。在像素的迭代值之前达到最大值的像素在集合中。
通常,这个最大值至少是100左右,这足以给你一个集合的基本形状。对于高缩放因子下的精细细节,这可以是数千次迭代中的10次或100次。
2) 你的意思是减少你实际计算的像素数。对我来说,这会影响图像的"平滑度",因为生成的图像基本上分辨率较低。
如果这就是你的意思,那么你需要改变计算图像的像素宽度和高度(即缩小x1
和y1
),或者改变循环中的X和Y步长,然后用正确颜色的较大矩形填充图像。
如果没有更好的代码示例,就不可能提供更具体的建议。