Фракталы Средний

Мандельбулб: трёхмерный фрактал

Интерактивный 3D-рендер Мандельбулба — обобщения множества Мандельброта на три измерения. WebGL ray marching прямо в браузере.

Длительность
15–30 минут
Бюджет
0 ₽
Возраст
14–99 лет
Сложность
Средний
#фракталы #3d #мандельброт #мандельбулб #webgl #самоподобие #хаос #вычислительный эксперимент

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

Мандельбулб

Степень 8z → z8 + c
23456789101112
Перетащи для вращения · прокрутка для зума

Что такое Мандельбулб?

Множество Мандельброта живёт на плоскости — это итерация zz2+cz \to z^2 + c в комплексных числах. В 1997 году Жюль Руис и Дэниел Уайт задались вопросом: можно ли поднять это в три измерения?

Ответ оказался нетривиальным. Комплексных чисел в 3D нет — кватернионы дают неинтересный результат. Уайт предложил другой путь: перейти к сферическим координатам и возводить в степень там.

Для точки z=(x,y,z)\mathbf{z} = (x, y, z):

r=z,θ=arccoszr,φ=arctanyxr = \|\mathbf{z}\|, \quad \theta = \arccos\frac{z}{r}, \quad \varphi = \arctan\frac{y}{x}

zn=rn(sin(nθ)cos(nφ), sin(nθ)sin(nφ), cos(nθ))\mathbf{z}^n = r^n \cdot (\sin(n\theta)\cos(n\varphi),\ \sin(n\theta)\sin(n\varphi),\ \cos(n\theta))

Итерация: zzn+c\mathbf{z} \to \mathbf{z}^n + \mathbf{c}.

При n=8n = 8 получается классический Мандельбулб — восьмикратная симметрия, похожий на морского ежа.

Как работает рендер

Рендер выполняется ray marching — алгоритмом трассировки лучей на основе оценки расстояния (Distance Estimation, DE).

Для каждого пикселя пускается луч из камеры. Функция DE оценивает, как далеко ближайшая поверхность фрактала. Луч шагает на это расстояние — и так итеративно до попадания или выхода за границу сцены.

Функция DE для Мандельбулба:

DE(p)=12rlnrdrDE(\mathbf{p}) = \frac{1}{2} \cdot \frac{r \cdot \ln r}{|dr|}

где drdr — производная нормы по итерациям. Всё вычисляется прямо на GPU в GLSL-шейдере.

Что можно исследовать

Степень nn — главный параметр. При n=2n = 2 — шар. При n=3n = 3 — «трезубец» с тройной симметрией. При n=8n = 8 — классический Мандельбулб. При n=12n = 12 — кристаллоподобная форма с двенадцатью «лепестками».

Пресеты:

  • Классика (n=8n = 8) — восьмикратная симметрия, стандартный вид
  • Трезубец (n=3n = 3) — три «рога», органическая форма
  • Паук (n=6n = 6) — шестилучевые выросты
  • Кристалл (n=12n = 12) — почти полностью заполненный шар с тонкими деталями

Связь с множеством Мандельброта

Сечение Мандельбулба плоскостью z=0z = 0 при n=2n = 2 даёт точную копию множества Мандельброта. Это проверочное свойство подтверждает, что конструкция Уайта — настоящее трёхмерное обобщение.

Однако важно понимать: Мандельбулб не является истинным 3D-аналогом с точки зрения алгебры. Это «феноменологическое» обобщение — красивое и самоподобное, но основанное на геометрическом, а не алгебраическом расширении. Поиск «настоящего» 3D Мандельброта остаётся открытой задачей.

Что почитать

  • Daniel White, «The Unravelling of the Real 3D Mandelbulb» (2009) — оригинальная публикация на fractalforums.com
  • Скотт Дрейвс и Эрик Рекламит, «The Fractal Flame Algorithm» (2008)
  • Benoit Mandelbrot, The Fractal Geometry of Nature (1982)
  • shadertoy.com — тысячи GLSL-шейдеров с фракталами, в том числе Мандельбулб
Обратная связь
Тип обращения
Ваша оценка
Сообщение
Подтверждение
Загрузка...

без персональных данных