ГоловнаСтаттіГенеративне мистецтво

Діамандо-квадрат: створення фрактальних ландшафтів з одного випадкового числа

Як серединне зміщення розвинулося в метод діамандо-квадратів, чому показник Хурста визначає грубі та хвилясті рельєфи, і чому справжні гори насправді є фрактальними.

mysimulator teamОновлено — червень 2026≈ 7 хв читання▶ Відкрити симуляцію

Зсув середини: шорсткість від одного випадкового числа

Найпростіший алгоритм генерації фрактальних ландшафтів, midpoint displacement, починається з чотирьох кутових точок квадрата, встановлених із певним висотою, і повторювано ділиться на дві частини: знаходить середину кожної сторони, усереднює кінцеві точки та додає випадковий зсув. Робіть це рекурсивно, і виникає шорсткий, самосхожий профіль, що утворюється майже нізвідки – та сама ідея, яка використовувалася для генерації фрактальних узбереж та гірських пейзажів в одній розмірності до того, як її було розширено на повну 2D висотну карту.

Алгоритм «Діамант-квадрат»

«Діамант-квадрат», розроблений у 1980-х роках як рішення для напрямлених артефактів у наївній 2D-методів переміщення середини, чергує два етапи на сітці розміром 2ⁿ+1 по кожній стороні. Етап «діамант» встановлює центр кожного квадрата з чотирма кутами та задає йому середнє значення цих чотирьох кутів плюс випадковий зсув; етап «квадрат» встановлює центр (середину сітчастої грані) кожного діаманта, що вже був встановлений, як середнє значення цих чотирьох точок плюс випадковий зсув, обмежуючи або переносячи його на межі сітки.

diamond step:  center = avg(4 corners of a square) + random(±r)
square step:   center = avg(4 corners of a diamond) + random(±r)
after each pass:  step size /= 2,  r *= 2^(-H)
жива демонстрація · пов'язана симуляція● LIVE

Індекс Хурста: перетворення шуму в правдоподібний рельєф

Одинокий параметр, що визначає, чи виглядатиме результат як ніжні пагорби чи грубі гори, — це індекс Хурста H, який встановлює швидкість зменшення випадкового зсуву при уточненні сітки: множення діапазону зсуву на 2⁻ᴴ на кожному подвоєнні розміру кроку. Низький H (близько 0) підтримує великі випадкові зсуви навіть на дрібних масштабах, що призводить до грубого, шорсткого рельєфу високої частоти; високий H (близько 1) швидко зменшує випадковість на дрібних масштабах, створюючи гладкий, хвилястий рельєф, домінуючий великий масштаб, встановлений у перших кількох проходах. H безпосередньо пов'язаний з фрактальною мірою рельєфу D = 3 − H для двовимірної поверхні, що є формальним обґрунтуванням того, як називається результат — ландшафт-фрактал: він має добре визначену нецілу розмірність, і статистична шорсткість виглядає схоже, незалежно від того, збільшуєте ви масштаб гори або окремого схилу.

Чому справжній рельєф насправді є фракталом

Це не просто зручна випадковість у комп’ютерній графіці — справжній рельєф дійсно демонструє самоподібність з масштабуванням у широкому діапазоні масштабів, властивість, яку спочатку кількісно визначив Бенуа Мандельброт у своїх дослідженнях узбереж та гірських хребтів у 1970-х роках. Ерозія, відкладення та тектонічні зсуви одночасно діють на багатьох просторових масштабах із приблизно самоподібними статистичними характеристиками, тому спектр потужності висот з Хазуа індексом, який зазвичай коливається між 0.4 і 0.9 для реальних ландшафтів, виявляється досить точним статистичним моделлю, а не просто візуально правдоподібною хитрим.

Класичний артефакт шва та чому він виникає

Наївна реалізація обробляє кожен квадрат незалежно, що означає, що спільна вершина середньої лінії обчислюється і випадково зсувається двічі – один раз кожним із двох квадратів, які її поділяють, виробляючи два різних значення для того, що повинно бути однією спільною висотою та створюючи видиму discontinuity (шов), що протікає вздовж ліній сітки, які збігаються з початковим двома ступенями поділу. Виправлення полягає в тому, щоб обробляти кожен квадрат кроку для всієї сітки на заданому масштабі, а потім кожен діаманбовий крок для всієї сітки на цьому ж масштабі, завжди ділитися вже обчисленими значеннями кутів, а не перераховувати їх за кожним квадратом; підтримка синхронізації між діаманбовими та квадратними проходами по всій сітці є тим, що відрізняє diamond-square від старого, схильного до появи швів 2D схему середнього зсуву, яку вона замінила.

За межами діамандово-квадратного: альтернативи на основі шуму

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

Frequently asked questions

Чому алмазо-квадратній алгоритму потрібна сітка розміром 2^n + 1?

Це тому, що алгоритм повторно ділить крок навпіл, і кожен поділ повинен точно припадати на точку сітки, щоб етапи «діаманта» та «квадрата» правильно співпадали. Розмір 2^n + 1 (наприклад, 129, 257, 513) гарантує, що кожен поділ дає ціле число клітинок без залишку, аж до рівня окремої клітинки.

Що саме контролює показник Хурста?

Він визначає, наскільки швидко випадковий зсув зменшується під час уточнення рельєфу до дрібніших деталей. Низький показник Хурста зберігає значну випадковість на дрібних масштабах, створюючи грубі, гірські ландшафти; високий показник Хурста швидко зменшує деталі, створюючи гладкі, хвилясті пагорби, що визначаються широким контуром, встановленим на ранніх етапах алгоритму.

Чому незрілі реалізації дають видимі шви?

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

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте Fractal Landscape і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію Fractal Landscape

Що ви знайшли?

Додати кроки відтворення (опційно)