【发布时间】:2017-06-11 01:41:13
【问题描述】:
我认为问题在于我如何将笛卡尔坐标转换为复数,但我现在知道如何。你能解释一下我应该如何转换吗?这是我尝试过的:
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));
}
}
【问题讨论】:
-
我认为这是您的坐标系。我认为你的窗口没有映射到 -1 到 1 而是 (0,0) 到 (width, height)
-
我应该如何映射它?你能解释一下吗?
-
映射到窗口时,实部和虚部的最小值都应为0,最大值应为窗口宽度和窗口高度