Почему это дает растянутый фрактал? - PullRequest
4 голосов
/ 26 ноября 2008

Вот псевдокод того, как я настраиваю массив, представляющий набор 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);
  }

Спасибо! * * 1004

Ответы [ 3 ]

7 голосов
/ 26 ноября 2008

Вот псевдокод того, как я настраиваю массив, представляющий набор MandelBrot, но это становится ужасно растянутым, если оставить соотношение сторон 1: 1.

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

Aha! Это потому, что вы должны сохранять одинаковое соотношение сторон и для изображения, которое вы нарисуете и для области сложной плоскости, которую вы хотите нарисовать. Другими словами, он должен содержать

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

(из этого следует, что xStep == yStep.) Ваш код, вероятно, не выполняет это требование.

0 голосов
/ 26 ноября 2008

Убедитесь, что все ваши приведения верны. xStep и yStep могут быть продуктами целочисленного деления вместо ожидаемого деления с плавающей запятой (если это C # в вашем примере, для корректной работы потребуются некоторые явные приведения).

0 голосов
/ 26 ноября 2008

Вероятно, это связано с тем, как вы отображаете массив image. Вы используете переменную ширины i в качестве первого индекса, но обычно первый индекс должен быть самым медленным изменением, то есть высотой.

Попробуйте изменить последнюю строку на image[j][i] = ...

...