4

这是我如何设置表示 MandelBrot 集的数组的伪代码,但是当纵横比为 1:1 时,它会变得非常拉伸。

xStep = (maxX - minX) / width;
yStep = (maxY - minY) / height;

for(i = 0; i < width; i++)
 for(j = 0; j < height; j++)
  {
   constantReal = minReal + xStep * i;
   constantImag = minImag + yStep * j;
   image[i][j] = inSet(constantReal, constantImag);
  }

谢谢!

4

3 回答 3

7

这是我如何设置表示 MandelBrot 集的数组的伪代码,但是当纵横比为 1:1 时,它会变得非常拉伸。

xStep = (maxX - minX) / width;
yStep = (maxY - minY) / height;

啊哈!这是因为对于要绘制的图像和要绘制平面区域,您必须保持相同的纵横比。换句话说,它必须持有

 width     maxX - minX
---------- = ---------------------
 height    maxY - minY

(随之而来的是 xStep == yStep。)您的代码可能不会强制执行此要求。

于 2008-11-26T05:19:25.883 回答
0

它可能与您显示image数组的方式有关。您使用宽度变量 i 作为第一个索引,但通常第一个索引应该是变化最慢的,即高度。

尝试将最后一行更改为image[j][i] =...

于 2008-11-26T04:38:46.543 回答
0

确保你的演员表都是正确的。xStep 和 yStep 可能是整数除法的乘积,而不是预期的浮点除法(如果您的示例中使用的是 C#,则需要一些显式强制转换才能正常工作)。

于 2008-11-26T04:45:57.433 回答