Фрактальное пламя похоже на светящийся шёлк или дым в луче прожектора, но его никто не рисует. Точка миллионы раз прыгает между несколькими преобразованиями плоскости, а картинка — карта того, где она бывает чаще: яркие жгуты — её излюбленные места, прозрачные вуали — редкие.
Как это устроено
«Геном» пламени — несколько преобразований. Каждое сначала применяет аффинное отображение (поворот, сжатие, сдвиг), а затем смесь нелинейных «вариаций» с весами: синусоидальной, сферической, вихря, подковы, «Жюлиа» и других — всего их здесь 28. Дальше идёт игра хаоса: точка выбирает преобразование случайно, с вероятностью по его весу, переходит в новое место и оставляет отметку в своём пикселе. Цветовая координата каждый раз сдвигается на полпути к цвету преобразования, поэтому цвет помнит, по какой цепочке точка сюда пришла.
На видеокарте в эту игру одновременно играют 262 144 частицы, при экспорте — больше миллиона. Первые 14 шагов частица не оставляет следов: она ещё падает на аттрактор. «Качество» — сколько отметок приходится на пиксель; при 60 кадр 1920×1080 собирается из 124 миллионов точек. Число попаданий в соседних местах различается в тысячи раз, поэтому яркость берут по логарифму: «Экспозиция» задаёт k, «Гамма» вытягивает слабые вуали, а «Сочность» решает, останутся ли плотные места цветными или выгорят в белое. Пиксели, где отметок мало, усредняются по кругу, который сужается по мере того, как их прибывает, — так шум превращается в дымку.
«Симметрия» добавляет в игру повороты на 360°/n общим весом, равным весу всех остальных преобразований. «Случайный» геном растёт из сида и проходит отбор: орбита должна заполнить от 20 до 90 % своей рамки, а яркие жгуты — выделяться на фоне дымки; перебирается до 60 кандидатов.
Немного истории
В 1981 году Джон Хатчинсон доказал, что у любого набора сжимающих отображений есть ровно одна фигура, составленная из собственных образов при этих отображениях. Майкл Барнсли в книге Fractals Everywhere (1988) рисовал такие множества игрой хаоса; его папоротник записан 28 числами — четыре отображения по шесть коэффициентов и четыре вероятности. В 1992 году Скотт Дрейвс изогнул отображения нелинейными вариациями — так родились фрактальные пламена, а их приметой стали логарифм плотности и цвет с памятью. В 1999-м он запустил Electric Sheep (название — отсылка к роману Филипа Дика), распределённую заставку: компьютеры добровольцев вместе просчитывают анимации пламён, зрители голосуют, а понравившиеся «овцы» скрещиваются и мутируют. Подробное описание алгоритма Дрейвс и Эрик Рекейс опубликовали в 2003 году.
Что покрутить
- «Геном» «Папоротник Барнсли» — чистая аффинная система без вариаций. Поставьте «Симметрию» 3–5, и папоротники разойдутся колесом.
- «Сочность» 0 и «Экспозиция» 4–6: сердцевина выгорает, как пересвеченный кадр. «Гамма» 4–5, наоборот, проявит самые бледные вуали.
- «Разброс цвета» 0 даёт одноцветное пламя, 2 — резкие контрасты между преобразованиями.
- С анимацией «Скорость» вращает первое преобразование, и пламя переливается. Добавьте сверху «Калейдоскоп» с «Порядком» 6 — получится живая мандала.