Fractal Flame

Генератор фрактального пламени на Python: алгоритм Chaos Game (IFS), многопроцессный рендер со слиянием результатов воркеров, гамма-коррекция и поворотная симметрия.

Период
ноябрь 2025 г. — июнь 2026 г.
Статус
Завершён
Моя роль
Единственный разработчик: реализация алгоритма, параллельный рендер, CLI и конфигурация.
Aurora — пример сгенерированного фрактального пламени

Стек

  • Python
  • NumPy
  • multiprocessing

Ключевые технические решения

  • Рендер распараллелен по процессам, результаты воркеров корректно сливаются в общую гистограмму.
  • Гамма-коррекция после логарифмического преобразования плотности: без неё изображение выходит плоским.
  • Поворотная симметрия как отдельный параметр композиции.
  • Параметры задаются через CLI и JSON-конфиг, поэтому кадр можно собрать заново по его конфигу.
  • Строгая типизация с проверкой mypy, модульные и интеграционные тесты, линтинг и CI.

Реализация алгоритма фрактального пламени: большое число точек прогоняется через набор аффинных и нелинейных преобразований по схеме Chaos Game (IFS) и накапливается в гистограмме плотности, которая затем проходит логарифмическое преобразование, а после него — гамма-коррекцию.

Рендер работает в один или несколько процессов, результаты параллельной работы объединяются в общую гистограмму. Число воркеров влияет на скорость. При этом каждый воркер идёт по своей последовательности случайных точек, поэтому кадры, собранные разным числом процессов, могут отличаться в мелких деталях.

Что даёт гамма-коррекция

Плотность точек распределена крайне неравномерно: без гамма-коррекции почти всё попадает в тёмные тона, и структура пропадает. Коррекция проявляет детали в областях с низкой плотностью, не пережигая плотные, — один и тот же кадр с ней и без неё:

Без гамма-коррекции
Без гамма-коррекции
С гамма-коррекцией
С гамма-коррекцией

За каждым примером на этой странице стоит свой конфиг. Все они лежат в репозитории, и два кадра выше отличаются в них одним значением.

Медиа