Фракталы

Инверсии и кляйновы группы

Группы дробно-линейных отображений: там, где их орбиты сгущаются, возникает предельное множество — кружево из окружностей («Жемчуг Индры»).

  • шейдер на GPU
  • зацикленная анимация
Открыть в редакторе →

Два зеркала напротив друг друга дают бесконечный коридор отражений. Сделайте их круглыми — и отражение станет инверсией, которая выворачивает круг наизнанку. Отражения отражений сжимаются, вкладываются друг в друга и сгущаются в кружево из окружностей — предельное множество.

Как это устроено

Отображения Мёбиуса — композиции чётного числа инверсий — переводят окружности в окружности. Несколько таких отображений со всеми их произведениями образуют группу; если в ней нет отображений, сколь угодно близких к тождественному, группа называется кляйновой, и орбита любой точки сгущается к одному фракталу — предельному множеству.

z ↦ (az + b) / (cz + d), ad − bc ≠ 0 инверсия в окружности (центр o, радиус r): z ↦ o + r² / (z̄ − ō) срез Маскита: a(z) = μ + 1/z, b(z) = z + 2

Шейдер идёт от обратного, как это делает художник Жос Лейс. У группы есть фундаментальная область — кусок плоскости, копии которого покрывают всё, кроме предельного множества. Точку пикселя по одному образующему за шаг возвращают в эту область; число шагов — номер «плитки» и её цвет. Накопленное растяжение даёт расстояние до кружева — для раскраски «по расстоянию» и «Свечения». Точка, не вернувшаяся за «Итерации», лежит на самом кружеве.

В «срезе Маскита» b сдвигает плоскость на 2, а a переводит единичную окружность с центром 0 в такую же с центром μ; «Параметр a» — это Re μ, «Параметр b» задаёт Im μ = 2 + b/4. При a = b = 0 выходит μ = 2i, и предельное множество — в точности аполлонова упаковка, уложенная в полосу. В «жемчуге Индры» четыре круга у точек ±1 и ±i связаны попарно, левый с правым и нижний с верхним: в каждом круге оказываются три меньших, в тех — ещё по три, и в пределе остаётся канторова пыль жемчужин. «Аполлониева упаковка» устроена проще: по рецепту Иниго Килеса плоскость сворачивают в квадратную ячейку и обращают в окружности, раз за разом.

Немного истории

Такие группы в начале 1880-х изучали Феликс Клейн и Анри Пуанкаре. Пуанкаре назвал один класс групп фуксовыми, в честь Лазаря Фукса; Клейн оспорил название, и следующий класс Пуанкаре назвал уже кляйновыми. Клейн с учеником Робертом Фрике рисовал предельные множества от руки. Настоящие картины появились лишь с компьютерами: Дэвид Мамфорд, Кэролайн Сириз и Дэвид Райт собрали их в книге «Жемчуг Индры» (2002). Название — из буддийского образа сети бога Индры: в каждом её узле висит жемчужина, в которой отражаются все остальные. А первое изображение множества Мандельброта появилось в 1978 году в статье Роберта Брукса и Питера Мателски — как раз о кляйновых группах.

Что покрутить

  • «Скорость», «Параметр a» и «Параметр b» равны нулю — аполлонова упаковка в полосе. Сдвиньте a, и упаковка перекосится, собравшись в ожерелья из бусин; b выше нуля раздвигает их.
  • «Жемчуг Индры», «Скорость» 0, «Параметр b» 0: все четыре круга перпендикулярны одной окружности, и пыль ложится точно на неё; при «Параметре a» 1 круги касаются, и пыль заполняет её целиком. Другие b сбивают пыль с окружности.
  • «Раскраска» «по расстоянию» и «Свечение» ближе к 1: плитки тонут в фоне, светится только кружево.
  • Добавьте сверху эффект «Рельеф» с «Видом» «металл» — кружево станет чеканкой по серебру.

Параметры

Группа
аполлониева упаковка · срез Маскита · жемчуг Индры
Параметр a
Маскит: Re μ; жемчуг: радиус кругов (1 — касаются); аполлониева: сила инверсии
Параметр b
Маскит: Im μ над границей среза; жемчуг: закрутка второй пары; аполлониева: форма ячейки
Итерации
Увеличение
Центр X
Центр Y
Раскраска
плитки · по расстоянию · ловушка
Частота цвета
Линии
Границы плиток, сгущающиеся к предельному множеству
Свечение
Скорость
Оборотов параметров по малой окружности за петлю