🌀 Множина Мандельброта

Центр Re-0.5
Центр Im0.0
Зум
Ітерацій300

Коліщатко миші — зум до курсора. Перетягування — панорамування. Подвійний клік — наблизити. Фрактал рендериться у реальному часі на GPU.

—0.5, 0.0 · 1×

Множина Мандельброта

Множина Мандельброта — це множина комплексних чисел c, для яких ітерація zn+1 = zn² + c, починаючи з z₀ = 0, залишається обмеженою (не втікає в нескінченність). Точки всередині множини зофарбовано чорним, а точки ззовні — відповідно до швидкості «втечі».

Для плавного забарвлення використовується дробовий номер ітерації μ = n − log₂(log₂|z_n|), який усуває смугасті артефакти.

Як досліджувати

Чи знаєте ви?

Межа множини Мандельброта є фракталом: вона має нескінченний периметр і самоподібну структуру на будь-якому масштабі. Збільшення в 10²⁰⁰ разів усе одно відкриває нові структури. Споріднені множини — множини Жюліа — отримуються шляхом фіксації c і зміни z₀; кожна точка всередині множини Мандельброта відповідає зв'язній множині Жюліа.

Про провідник по множині Мандельброта

Цей провідник будує множину Мандельброта — множину комплексних чисел c, для яких ітерація z(n+1) = z(n) у квадраті + c, починаючи з z = 0, залишається обмеженою. Кожен піксель відповідає точці c на комплексній площині та ітерується в реальному часі на GPU за допомогою фрагментного шейдера WebGL. Точки, які ніколи не виходять за радіус втечі, малюються чорним; точки, що втікають, зафарбовуються відповідно до їхнього часу втечі.

Повзунок «Макс. ітерацій» (від 50 до 1000) задає, наскільки довго перевіряється кожна точка, відкриваючи тонші деталі на глибокому зумі, але рендерячись повільніше. Випадний список «Кольори» дозволяє обрати косинусні палітри Вогонь, Океан, Психоделіка та Відтінки сірого. Прокручуйте для зуму до курсора, перетягуйте для панорамування, двічі клікніть для наближення або скористайтеся кнопками «Скинути» та «Зум». Методи часу втечі, подібні до цього, лежать в основі проєктування антен, стиснення зображень і процедурного текстурування.

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

Що таке множина Мандельброта?

Це множина комплексних чисел c, для яких послідовність z(n+1) = z(n) у квадраті + c, починаючи з z = 0, залишається обмеженою, а не мчить у нескінченність. На комплексній площині вона утворює знамениту форму з кардіоїди та бруньок з нескінченно складною фрактальною межею.

Як ця симуляція обчислює зображення?

Кожен піксель на полотні відображається на комплексну координату c, а потім ітерується за формулою z = z у квадраті + c на GPU. Якщо модуль z залишається нижчим за радіус втечі до межі ітерацій, піксель малюється чорним; інакше він зафарбовується залежно від того, скільки кроків знадобилося для втечі. Увесь кадр обчислюється у фрагментному шейдері WebGL.

Що робить повзунок «Макс. ітерацій»?

Він задає максимальну кількість разів, яку кожна точка ітерується перед тим, як її буде визнано частиною множини, у діапазоні від 50 до 1000 зі значенням за замовчуванням 300. Вищі значення розкривають тонкі нитки та дрібну структуру, що з'являються лише на глибокому зумі, але роблять рендеринг повільнішим, бо кожен піксель проходить цикл більше разів.

Що представляють кольорові палітри?

Варіанти Вогонь, Океан, Психоделіка та Відтінки сірого — це різні косинусні градієнти, застосовані до часу втечі кожного пікселя. Сам колір не несе додаткового математичного змісту; він просто візуалізує, наскільки швидко точка покинула область втечі, перетворюючи плавне значення втечі на приємний градієнт без смуг.

Яке ключове рівняння лежить в основі?

Основне правило — z(n+1) = z(n) у квадраті + c, ітероване від z = 0, де c — координата пікселя на комплексній площині. Щоб уникнути смугастості кольору, провідник використовує плавне забарвлення, mu = n + 1 мінус log2(log2 модуля z), що дає неперервне значення втечі замість ступінчастого цілого підрахунку.

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

Чорні пікселі — це точки, ітерації яких ніколи не перевищують радіус втечі в межах ліміту ітерацій, тож їх вважають належними до множини. Оскільки перевірка обмежена значенням «Макс. ітерацій», кілька чорних точок насправді є дуже повільними втікачами; підвищення повзунка може показати, що деякі на вигляд суцільно чорні області насправді містять дрібні деталі.

Чи є рендеринг математично точним?

Алгоритм часу втечі точний у принципі, але цей провідник використовує число з плаваючою комою одинарної точності на GPU. Цього цілком достатньо для помірного збільшення, проте на надзвичайно глибокому зумі похибки округлення спричиняють блочність зображення, бо доступні розряди вичерпуються. Професійні інструменти глибокого зуму використовують арифметику довільної точності, щоб просунутися значно далі.

Наскільки глибоко я можу наближати, перш ніж деталі зникнуть?

Математично межа самоподібна на будь-якому масштабі, тож структура ніколи по-справжньому не закінчується. На практиці ця симуляція обмежена числами з плаваючою комою одинарної точності, які починають пікселізуватися приблизно після трильйонного збільшення. До цієї межі прокручування чи подвійний клік продовжують відкривати долини коней-морів, спіралі та крихітні копії всієї множини.

Як множина Мандельброта пов'язана з множинами Жюліа?

Множина Жюліа фіксує значення c і змінює початкову точку z, тоді як множина Мандельброта фіксує z = 0 і змінює c. Кожна точка всередині множини Мандельброта відповідає зв'язній множині Жюліа, тож множина Мандельброта діє як карта чи покажчик того, які множини Жюліа є зв'язними, а які — роздробленим пилом.

Яке практичне застосування фракталів часу втечі?

Окрім генеративного мистецтва, ідея часу втечі лежить в основі проєктування фрактальних антен, де самоподібні форми вміщують широкий частотний відгук у малий розмір. Споріднена фрактальна математика з'являється у стисненні зображень і сигналів, генерації рельєфу й текстур для фільмів та ігор, а також у моделюванні природних патернів, як-от берегові лінії та хмари.