Главная / Статьи / Интегральное чтиво / Использование фрактальных множеств в Delphi

Каждый из нас не раз наблюдал картины с хитроумным рисунком, который невозможно понять, однако необычность форм таких картин завораживает и приковывает внимание. Данные хитроумные формы казалось бы не поддаются никакому математическому описанию. Такие картины можно сравнить с теми же узорами на стекле после сильного мороза или с замысловатыми кляксами, оставленными чернильной ручкой на листе бумаги. Именно что-то похожее можно записать в виде отдельного алгоритма, и, как следствие, доступно объясниться с компьютером.

Использование фрактальных множеств в Delphi

Каждый из нас не раз наблюдал картины с хитроумным рисунком, который невозможно понять, однако необычность форм таких картин завораживает и приковывает внимание. Данные хитроумные формы казалось бы не поддаются никакому математическому описанию. Такие картины можно сравнить с теми же узорами на стекле после сильного мороза или с замысловатыми кляксами, оставленными чернильной ручкой на листе бумаги. Именно что-то похожее можно записать в виде отдельного алгоритма, и, как следствие, доступно объясниться с компьютером.

Каждый из нас не раз наблюдал картины с хитроумным рисунком, который невозможно понять, однако необычность форм таких картин завораживает и приковывает внимание. Данные хитроумные формы казалось бы не поддаются никакому математическому описанию. Такие картины можно сравнить с теми же узорами на стекле после сильного мороза или с замысловатыми кляксами, оставленными чернильной ручкой на листе бумаги. Именно что-то похожее можно записать в виде отдельного алгоритма, и, как следствие, доступно объясниться с компьютером.

Такие множества и называют фрактальными, которые появились не так давно, однако успели завоевать свою важную нишу. Фракталы нельзя сравнить с обычными фигурами, которые нам привычны. Не похожи они и на геометрические фигуры. Строятся фракталы по определенным алгоритмам в Delphi, которые впоследствии с помощью компьютера можно перенести в виде изображения на экран. Если говорить более простым языком, то фракталами считаются некие преобразования, которые многократно применяются к одной исходной фигуре.

Более подробно остановимся на фрактальных множествах Жюлиа и Мандельброта. У данных изображений множеств отсутствуют какие-либо четкие границы. Главной особенностью таких фракталов является интересное построение: даже самая маленькая часть изображения играет большую роль и в конечном итоге из нее получается общее целое. Несомненно, самый изумительный эффект наблюдается в множестве Жюлиа.

Теперь рассмотрим более подробно вопрос построения этих удивительных множеств в Delphi. Все сводится к простому вычислению одной небольшой и единственной формулы.

Zi 1=Zi2 C

Z и C здесь являются комплексными числами. Из формулы ясно видно, что, по сути, она представляет собой простую рекурсию либо подобие многократно примененного преобразования. При известных правилах работы с комплексными числами эту простую формулу можно еще упростить, тогда она получится такого вида:

xi 1=xi2-yi2 a
yi 1=2*xi*yi b

У Мандельброта построение множества иное и сводится оно к следующему. Для каждой из точек (a,b) делается серия вычислений по формулам приведенным выше, причем x0 и y0 считаются равными нулю, таким образом точка в формуле и будет константой. На каждом шаге необходимо исчислить величину r=sqrt(x2 y2 ). Данное значением r является точка с координатами (x,y), находящаяся на расстоянии от начала координат ( r=sqrt[ (x-0)2 (y-0)2] ). Исходная точка (a,b) является принадлежащей множеству Мандельброта, в том случае, если она не удаляется от начала координат на какое-либо число, являющееся критическим.

Для необходимого отображения можно подсчитать скорость ее удаления от центра в Delphi. Потом, если точка уходит на критическую дистанцию, то в зависимости от расстояния, окрасить исходную точку в некоторый цвет. Окончательное полное изображение множества можно получить на плоскости от -1.5 до 1.5 по оси y и от -2 до 1 по оси x. Также можно сказать, что для получения приемлемой точности вполне достаточно 100 итераций, хотя согласно теории, их может быть бесконечно много.

Ниже здесь представлен листинг функции Delphi, который воспроизводит выполнение итераций, а также определяет принадлежность какой-либо точки множеству Мандельброта. Если быть предельно точным, то на выходе получается цвет для нужной точки. Число 2 взято в качестве критического. Чтобы не пришлось вычислять корень, квадрат расстояния (r2) сравниваем с квадратом критического числа.

function MandelBrot(a,b: real): TColor;

Дополнительные источники информации по теме фракталов в Delphi:

  1. Форум программистов — http://www.cyberforum.ru/.
  2. Форум Delphi — http://www.cyberforum.ru/delphi/.

О Rona Ray

проверьте также

Обзор геймерской материнской платы ASUS TUF GAMING Z690 Plus WiFi D4

ASUS TUF GAMING Z690 Plus WiFi D4 — это игровая материнская плата с чипсетом Intel Z690 и процессорным разъемом LGA 1700, что означает поддержку процессоров Intel Core 12-го поколения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

WP2Social Auto Publish Powered By : XYZScripts.com