Алгоритм Fractal flames для чайников


Всем снова привет, с вами @meskalinerush.


В этой статье я вам расскажу об алгоритме Fractal flames. Некоторые называют его фрактальным пламенем, но, на мой взгляд, термин узок и приемлем для конкретных ситуаций. Лучше использовать оригинальное название без перевода. Многие “фрактальные” люди, когда их спрашивают, как работают генераторы фракталов, отвечают с загадочным видом: «На алгоритме Fractal flames» и многозначительно молчат. Почему за столь коротким ответом следует такая долгая пауза? Дело в том, что объяснить этот принцип весьма непросто, и я попытаюсь это сделать за всех фрактальщиков тем, кто задает себе этот важный вопрос. Причем, постараюсь сделать это без математики и специфической терминологии.

Во-первых, нужно понять, что Алгоритм Fractal flames (в дальнейшем я называть его буду FFA) – это часть и член математических IFS (Iterated Function Systems – системы итерированных функций). Что же такое IFS?

В математике это достаточно сложные определения и построения, но мы ограничимся тем, что IFS – это метод построения фракталов, которые состоят из объединенных копий самих себя (от 1 до бесконечности). В свою очередь, копии самих себя преобразуются определенной функцией.
В примере, который используется везде для описания IFS, используется треугольник Серпинского. И это правильно, так как здесь понятие о IFS наиболее раскрыто наглядно.


***

В классическом итерационном методе построения треугольника сначала из середин сторон исходного треугольника строят серединный треугольник, далее его внутренность удаляется, и получаются 3 треугольника. Это первая итерация. Также поступают далее – строятся серединные треугольники получившихся трех треугольников, у них удаляются серединки – получается 9 треугольников (2 итерация). И так далее, пока хватит терпения))))


***

Грубо говоря, в IFS используется сжимающая функция для каждого треугольника. Треугольник сжат функцией и размножен (первая итерация состоит из трех треугольников). В дальнейшем та же функция сжимает эти три треугольника и снова размножает (вторая итерация получается из 9 треугольников). И так далее. Таким образом IFS использует линейные функции построения. Кстати, результат построения (картинка на плоскости) называется аттрактор. Можно сказать, что IFS использует функцию сжимающего преобразования на метрическом пространстве, которая равномерно уменьшает расстояние между двумя точками пространства. Если итерировать (множить) данный аффинный процесс преобразования (функцию) точки или изображения, то и получается алгоритм IFS.
Алгоритм FFA хотя и является частью IFS, использует несколько иное построение фракталов в дополнение к оригинальной IFS. В случае, если IFS построены из нелинейных функций, включая проективные преобразования и преобразования Мёбиуса, то такой алгоритм является FFA. Но не всегда, так как существует еще несколько алгоритмов.

Алгоритм FFA отличается тем, что использует:

  • нелинейные функции вместе с аффинными преобразованиями классической IFS;
  • цвет по структуре вместо монохромного или цвета по плотности (если IFS использует для построения монохром, то использование FFA делает фрактал более привлекательным для восприятия также за счет расширения видимой части фрактала);
  • лог отображения плотности вместо линейного или двоичного (форма tone mapping, а тональные диапазоны сокращают динамический диапазон).

Таким образом, FFA имеет некоторое преимущество перед использованием обычных IFS. Практически все генераторы фракталов обязаны этим Скотту Дрейвсу, который написал этот алгоритм еще в 1982 году. Добавим к этой процедуре аффинных и нелинейной трансформаций алгоритм рендеринга, гамма-коррекцию и - вуаля! - наш фрактал готов!

Если применять данную процедуру к небезызвестному Apophysis 7X, то плагины с расширением .dll, написанные на Си или C++, есть не что иное, как нелинейные преобразования к обычным аффинным трансформациям. Гамма-коррекция и операции с цветом также знакомы по окну Adjustment и вкладке Rendering.

Краткий экскурс в FFA окончен. Если я в чем-то неправ, прошу поправить, так как я описал только то, к чему пришел сам, без особого погружения а алгоритмы и математические дебри фрактальной геометрии. Если же кому-то стало интересно – добро пожаловать в мир высоких технологий: алгоритм Fractal flame от Скотта Дрейвса всегда можно нарыть в сети, почитать (!!нужен английский!!) и сделать самостоятельные выводы.

Всем пока, до следующих встреч)

Пост подготовил @meskalinerush для сообщества Fractal
TEXT.RU - 100.00%


Дизайн: @dasarts

фракталнаукаfractal-sciencevp-fractalvox-populi
170
123.630 GOLOS
0
В избранное
Fractal
На Golos с 2017 M09
170
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (8)
Сортировать по:
Сначала старые