Вычисление точек множества Мандельброта может занять довольно много времени, но существует несколько специальных приемов, позволяющих ускорить процесс. Область с центром в точке с = -0.5+10.0 представляет наибольший интерес, хотя, возможно, вам и захочется изменить размер и положение окна просмотра.

Как правило, уже посЛе нескольких итераций можно довольно уверенно предсказать, уйдут ли точки рекуррентной последовательности в бесконечность или будут стремиться к точке сходимости. Например, если |г*| > 4, то по мере возрастания номера итерации точки все больше расходятся и можно прекращать процесс. Сложнее предсказать поведение последова11.8. Множество Мандельброта тельности, когда исходная точка находится вблизи границы зоны раздела. Поэтому обычно используется аппроксимация множества, причем выполняется она следующим образом. Мы фиксируем максимальное количество итераций. Если при данном с последовательность точек, сформированная на заданном количестве итераций, обнаруживает тенденцию к расхождению, последовательность считается расходящейся и точка с окрашивается белым цветом. Если после выполнения заданного количества итераций значение |zA| не превышает некоторого порога, считается, что точка с принадлежит множеству Мандельброта и на изображении комплексной плоскости она окрашивается в черный цвет. Можно присваивать цвет точке с и соответственно значению \гк\ после выполнения последней итерации.

На ftp-сервере по адресу ftp.cs.unm.edu в каталоге /pub/angel/ВООК находится программа Mandelbrot.с, которая формирует множество Мандельброта по этому приближенному алгоритму. Пользователь этой программы имеет возможность устанавливать размеры и положение обозреваемой зоны комплексной плоскости, а также максимальное количество итераций для анализа расходимости рекуррентной последовательности. Комплексные числа ък масштабируются таким образом, чтобы их абсолютная величина находилась в интервале от О до 255. Программа формирует однобайтовый массив image размером n х m и заполняет его значениями zk, полученными после выполнения заданного количества итераций. Каждый элемент массива определяет затем цвет соответствующего пикселя картинной плоскости. Процесс отображения включает две стадии. На первой стадии формируется карта цветов, это происходит на этапе инициализации программы. Программа демонстрирует пользователю представление значений яркости в диапазоне (0.0, 1.0). Пользователь определяет карту соответствия интенсивности красного цвета таким образом, что минимальной яркости (0.0) будет соответствовать отсутствие красной составляющей в сумме цветов, а максимальной яркости (1.0)- насыщенный красный цвет. Между этими крайними значениями выполняется линейная интерполяция. Для синей составляющей формируется обратное соответствие - нулевой яркости соответствует насыщенный синий цвет, а максимальной яркости - отсутствие синей составляющей. Зеленая составляющая выбирается случайным образом. Такой способ установки значения зеленой составляющей позволяет лучше передать в изображении области с малым перепадом интенсивности (рис. 11.30,6). Программный код заполнения карты соответствия цветов приведен ниже.


⇐ Предыдущая| |Следующая ⇒