Math 为什么会产生拉伸分形?

Math 为什么会产生拉伸分形?,math,fractals,Math,Fractals,下面是我如何设置一个表示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 + y

下面是我如何设置一个表示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);
  }
xStep=(maxX-minX)/width;
yStep=(最大-最小)/高度;
对于(i=0;i

谢谢

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


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

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

下面是我如何设置表示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);
  }
啊哈!这是因为对于要绘制的图像和要绘制的复杂平面区域,必须保持相同的纵横比。换句话说,它必须保持稳定

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

(因此xStep==yStep。)您的代码可能没有强制执行此要求。

您能否显示函数“inSet”正在执行的操作。它计算该点的迭代次数,如果距离“太远”,则返回迭代次数或0。这不是水平和垂直翻转它,而不是将其拉伸吗?更糟糕的是,如果宽度不等于高度,它将写入数组外部的内存,而OP正试图这样做!就这样!我从来没有想到过。非常感谢你。2:1在显示空间和复杂空间中的比例为2:1时有效。