Про цю симуляцію

Автор: Команда MySimulator · Редакційна перевірка: Редакція MySimulator

Оновлено: 7 липня 2026 р.

Ця симуляція малює Мандельбульб — найвідоміший тривимірний аналог множини Мандельброта — за допомогою GPU-рейтрейсингу з аналітичним дистанційним естиматором. Кожна точка переводиться у сферичні координати r, θ, φ, підноситься до степеня n через r→rn, θ→nθ, φ→nφ, повертається назад у декартові координати і зсувається на початкову точку c — це точне відображення z→zn+c із комплексної площини. Поточна похідна dr відстежує, наскільки швидко розбігаються сусідні точки, даючи безпечний крок DE = 0.5·log(r)·r/dr, на який промінь просувається вперед. Чим швидше точка виходить за поріг втечі, тим далі вона від поверхні фрактала; кількість ітерацій до втечі визначає колір, а нормалі, м'які тіні та ambient occlusion додають об'єму.

🔬 Що показано

Колючу, кораловидну 3D-поверхню, повністю побудовану з часу втечі ітерації z→zn+c у сферичних координатах. Колір поверхні кодує кількість ітерацій, які точка витримала до перетину порогу втечі, а освітлення складається з рейтрейсингової нормалі, м'якої тіні та ambient occlusion — усе обчислюється на GPU для кожного пікселя, кожного кадру.

🎮 Як користуватися

Тягніть по полотну, щоб обертати камеру, і прокручуйте колесо, щоб масштабувати — обидва рухи просто змінюють точку камери й матрицю обертання, що подаються в шейдер. Степінь n змінює форму фрактала (n=8 — канонічна «булька»), Макс. ітерацій міняє деталізацію на швидкість, Поріг втечі задає межу виходу за межі, Палітра перефарбовує кількість ітерацій, а Якість масштабує внутрішню роздільність рендеру. Авто-обертання крутить вигляд саме; «Знімок екрана» зберігає поточний кадр у PNG.

💡 А чи знали ви?

Жодна формула не дає ідеального 3D-еквівалента 2D множини Мандельброта — множення комплексних чисел не має чіткого тривимірного узагальнення, — тож «триплексна» формула зі степенем n, використана тут, є наближенням, яке винайшли ентузіасти спільноти Fractalforums і популяризували лише 2009 року, через десятиліття після оригінального відкриття Мандельброта 1980 року.

Поширені запитання

Що таке дистанційний естиматор DE = 0.5·log(r)·r/dr і навіщо він потрібен рейтрейсингу?

Рейтрейсинг просуває промінь крок за кроком, поки той не влучить у поверхню, але без знання відстані до неї знадобилися б тисячі марних крихітних кроків. Дистанційний естиматор використовує радіус r формули часу втечі та накопичену похідну dr, щоб обчислити математично безпечну верхню межу того, наскільки далеко може просунутися промінь, не «проскочивши» фрактал — шейдер цієї симуляції крокує вперед саме на цю відстань на кожному з до 96 своїх кроків, і саме це уможливлює рендер у реальному часі на звичайних GPU.

Чому зміна степеня n так сильно змінює форму фрактала?

Степінь n визначає, скільки разів множаться кутові координати θ і φ (θ→nθ, φ→nφ) і як підноситься до степеня радіус (r→rn) на кожній ітерації z→zn+c. Невеликі зміни n змінюють, які точки втікають, а які лишаються обмеженими, що перебудовує всю самоподібну структуру — n=8 дає знамениту опуклу, схожу на собор форму, яку симуляція використовує за замовчуванням, а інші значення n від 2 до 12 дають помітно інші кількості пелюсток і текстури поверхні.

Чи існує математично «справжня» 3D-версія множини Мандельброта?

Ні — 2D множина Мандельброта спирається на множення комплексних чисел, яке має чіткий геометричний зміст (множення модулів, додавання кутів), що не поширюється однозначно на три виміри. «Триплексна» формула у сферичних координатах, реалізована в цій симуляції (r→rn, θ→nθ, φ→nφ), — лише один із кількох популярних варіантів 3D-узагальнення, цінний за багату органічну деталізацію, а не за унікальність математичного продовження оригіналу.

Що насправді роблять налаштування «Поріг втечі» та «Макс. ітерацій»?

Поріг втечі задає радіус втечі: щойно відстань точки від початку координат перевищує це значення (перевіряється як r² > поріг² у шейдері), точка вважається такою, що втекла, й ітерація зупиняється достроково. Макс. ітерацій обмежує, скільки разів застосовується формула z→zn+c, перш ніж здатися. Точки, що втікають швидко, лежать далеко за межами поверхні фрактала; точки, що витримують увесь бюджет ітерацій, — глибоко всередині нього, а межа між цими двома поведінками і є поверхнею фрактала, яку малює рейтрейсер.

Чому збільшення Макс. ітерацій сповільнює частоту кадрів, але виявляє тоншу деталізацію?

Кожен крок рейтрейсингу викликає функцію дистанційного естиматора, а вона сама циклічно виконується до поточного значення Макс. ітерацій, обчислюючи формулу фрактала й оновлюючи похідну dr. Більше ітерацій дозволяє тесту часу втечі розрізняти дедалі тоншу різьбу біля межі фрактала, але оскільки цей внутрішній цикл виконується для кожного з приблизно 96 кроків маршу променя на піксель, на кадр, подвоєння бюджету ітерацій приблизно подвоює навантаження на GPU і знижує лічильник FPS у панелі статистики.