Возьмите комплексное число c, начните с нуля и повторяйте одно действие: возвести в квадрат, прибавить c. Те c, при которых последовательность не улетает в бесконечность, образуют множество Мандельброта. Правило умещается в строчку, а граница множества бесконечно сложна: где ни увеличивай, появляются новые спирали, усики и крошечные копии целого.
Как это устроено
Каждый пиксель — своя точка c. Шейдер повторяет шаг, пока |z| не превысит 10 000 (порог выше классической двойки — так плавный счёт точнее) или пока не кончится лимит — от 220 шагов на общем плане до нескольких тысяч в глубине. Цвет задаёт плавный счёт ν: число шагов с дробной поправкой, которая показывает, насколько орбита «перелетела» порог. Полосы отсчитываются от самой быстро убегающей точки кадра, поэтому на любой глубине раскраска одинаково богатая.
Вместе с z считается производная z′, а из неё — оценка расстояния d до границы. По ней проявляются нити тоньше пикселя и работают «Рельеф» и «Свечение». Ловушки запоминают, насколько близко орбита подошла к точке, прямой, кресту или окружности.
Видеокарта считает во float32 — это около семи знаков, и уже при увеличении примерно в тысячу раз соседние пиксели слипаются. Выручает теория возмущений: процессор в двойной точности считает одну опорную орбиту Zₙ из центра кадра, а каждый пиксель ведёт лишь своё малое отклонение δₙ, которому семи знаков хватает. Если орбита пикселя подходит к нулю ближе, чем велико отклонение, её перецепляют к началу опорной. Так Мандельброт, трикорн, мультиброт и Жюлиа погружаются до 10⁻¹²: будь множество размером с Землю, кадр был бы тоньше волоса. Горящий корабль и метод Ньютона считаются напрямую.
Немного истории
В 1918 году Гастон Жюлиа, потерявший на фронте нос, получил Большую премию Парижской академии наук за мемуар об итерациях рациональных функций; параллельно ту же теорию строил Пьер Фату. Первое грубое изображение множества напечатали Роберт Брукс и Питер Мателски в 1978 году, в работе о кляйновых группах. В 1980-м Бенуа Мандельброт подробно рассмотрел его на компьютерах IBM, а в 1982-м Адриен Дуади и Джон Хаббард доказали, что оно связно, и назвали его именем Мандельброта. Трюк с возмущениями опубликовал в 2013 году К. И. Мартин.
Что покрутить
- «Место» «Долина морских коньков», «Раскраска» «полосы», «Рельеф» около 0,7 — завитки станут объёмными.
- «Место» «Дендрит», затем «Формула» «Жюлиа»: веточки множества Мандельброта возле точки i повторяют веточки множества Жюлиа для c = i. Это сходство доказала Тан Лэй.
- «Место» «Бездна 10⁻¹⁰» и «Увеличение» 100 — предел глубины, кадр в триллион раз меньше общего плана.
- «Ньютон: zⁿ − 1» со «Степенью» 5: в любой точке границы бассейнов сходятся цвета всех пяти корней, а «c: Re» и «c: Im» меняют шаг метода, и границы вспухают.
- «Внутри» «фон» делает множество прозрачным: подложите снизу «Фрактальный шум», и внутри заклубится туман. А эффект «Мозаика» сверху выложит всё смальтой.