Цветовой цикл с плохой точностью изображения Мандельброта?

Я создал мандельброта в php, но мандельброт выглядит немного странно. Как я могу улучшить его? введите здесь описание изображения

Вы можете найти живой пример здесь: http://www.phpdevpad.de/index.php?id=190.

Обновление: Mandelbrot-Zoom с 900 итерациями:

введите здесь описание изображения

Обновление: я использую этот метод вычисления Мандельброта:

double Re_factor = (MaxRe-MinRe)/(ImageWidth-1);
double Im_factor = (MaxIm-MinIm)/(ImageHeight-1);

double newMinRe = MinRe + (Re_factor* x1);
double newMaxRe = MinRe + (Re_factor* x2);
double newMinIm = MinIm + (Im_factor* y1);
double newMaxIm = MinIm + (Im_factor* y2);

// and then I compute c - real and c- imag values

  for(unsigned y=0; y<ImageHeight; ++y) 
{ 
  double c_im = newMinIm - y*Im_factor;
  for(unsigned x=0; x<ImageWidth; ++x)
    {
      double c_re = newMinRe + x*Re_factor;

      // ComputeMandelbrot();

     }

 }
  1. http://warp.povusers.org/Mandelbrot/

person Gigamegs    schedule 02.12.2012    source источник
comment
Можешь скинуть ссылку на источник? Или включить соответствующие биты здесь?   -  person ethrbunny    schedule 02.12.2012
comment
@ethrbunny: Готово. Прочтите мое обновление.   -  person Gigamegs    schedule 04.12.2012
comment
В учебнике по множествам Жюлиа... Связное множество Жюлиа всегда содержит точку 0+0i. Несвязный не содержит этой точки. Таким образом, проверяя точку 0+0i для различных значений K, вы можете создать карту связанных наборов Джулия. Эта карта ЯВЛЯЕТСЯ множеством Мандельброта для этого семейства множеств Жюлиа. Мандельброт буквально открыл эту форму, сопоставив множества Юлия.   -  person phkahler    schedule 05.12.2012


Ответы (2)


1) Вам нужно увеличить максимальное количество итераций. Черные области слишком велики.

2) Вы можете изменить вкус на что-то более интересное. Резкое изменение на «синий» странно.

3) Изображение женщины по умолчанию должно быть крупнее и....

person phkahler    schedule 03.12.2012
comment
Попробуйте 300. Затем попробуйте 1000. 60 подходит для просмотра верхнего уровня, но по мере увеличения масштаба становится необходимым большее значение. Добавьте итерации к увеличенному изображению, чтобы сравнить низкое и высокое количество итераций. - person phkahler; 04.12.2012
comment
Для глубокого масштабирования вам также может понадобиться расширенная арифметическая точность. - person lhf; 04.12.2012

Я предполагаю, что происходит несколько вещей:

  1. Как упоминалось ранее, 60 итераций на таком фрактале ни к чему не приведут. Попробуйте 6000.
  2. Вероятно, вы сталкиваетесь с пределами точности двойного числа. Это в конечном итоге приведет к блочному и, возможно, неправильному рендерингу, особенно при масштабировании. Вам понадобится точный числовой тип. PHP изначально не предлагает действительно точный тип данных, поэтому вам придется либо исключать незначительные несоответствия, связанные с природой чисел с плавающей запятой, либо самостоятельно заниматься забавной математикой в ​​виде целых чисел или байтов.
person mschultz    schedule 04.12.2012
comment
РЖУ НЕ МОГУ. Это дает мне максимальную ошибку выполнения с php. Мне нужна лучшая оптимизация. Было бы быстрее написать это на JS? - person Gigamegs; 04.12.2012
comment
JS может быть лучшим вариантом, так как обработка будет происходить на стороне клиента, а не на вашем сервере. - person mschultz; 04.12.2012
comment
В таком случае, наверное, это не имеет значения. Похоже, что вы достигли своей цели в рендеринге в первую очередь, я бы посоветовал изучить, возможно, рендеринг набора Джулии? - person mschultz; 04.12.2012
comment
Да. Что-то такое. Или оптимизации с сайта википедии (mandelbrot). Я этого не понял. - person Gigamegs; 04.12.2012