Mandelbrot 集未显示在中心

Mandelbrot Set not displaying at center

我认为问题在于我如何将笛卡尔坐标转换为复数,但我现在知道如何转换了。你能解释一下我应该如何转换吗?这是我尝试过的:

double c_Im = (y + (maxIm - minIm)) / height;
double c_Re = (x + (maxRe - minRe)) / width;

代码:

float minRe = -2.0;
float maxRe = 2.0;
double minIm = -2.0;
double maxIm = 2.0;

for (size_t y = 0; y < height; y++)
    {
        double c_Im = (y + (maxIm - minIm)) / height;

        for (size_t x = 0; x < width; x++)
        {
            double c_Re = (x + (maxRe - minRe)) / width;
            float dx = 0, dy = 0;
            int z = 0;
            while (dx * dx + dy * dy < 4 && z < maxIterator)
            {
                float temp = (dx * dx - dy * dy) + c_Re;
                dy = 2 * dx * dy + c_Im;
                dx = temp;
                z++;
            }
            image.setPixel(x, y, Color(z % 255, z % 255, z % 255));

        }
    }

not_expected_output.jpg

我想你要找的公式是这样的:

double c_Im = y * (maxIm - minIm) / height + minIm;

double c_Re = x * (maxRe - minRe) / width + minRe;

这是由映射公式推导出来的:Y=(X-A)*(D-C)/(B-A)+C