ГоловнаСтаттіМагічний пісок та дим

Пісок, дим, вогонь і вода: Клітинний автомат за саนด์боксом

Як сітка простих правил сусіда створює купи піску, поширення води, підйом диму та горіння вогню.

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

Сітка простих правил, а не фізичний двигун

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

жива демонстрація · пов'язана симуляція● LIVE

Пісок: гравітація плюс кидок монети

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

Дим і вогонь: дифузія та плавучість

Дим поводиться абсолютно протилежно до піску – він схильний підніматися та розповсюджуватися. Кожну клітинку диму має шанс переміщатися вгору або вбік у порожню сусідню клітину, і її щільність або життєва цінність повільно зменшуються з кожною кадровою послідовністю доти, поки вона не зникне – це і пояснює, чому димний стовп витончується та згасає, коли піднімається вгору. Вогняні клітини поводяться подібно до диму, але також мають правило для горіння: клітина вогню, що межує з легкозаймистою (наприклад, пісок, який замінює паливо), має шанс перетворити сусідню клітину на вогонь, і спалювані клітини перетворюються на дим, коли їхня цінність палива вичерпається. Цей локальний інфекційний та зникаючий шаблон достатньо для створення полум’я, яке мерехтить, розповсюджується по джерелу палива та залишає димову завісу – все це завдяки правилам, які завжди дивляться на одну клітину поруч.

SAND:  if below empty        → fall down
       elif diag empty (either) → fall diagonally (random pick)
       else                     → stay

FIRE:  each frame: chance to ignite a flammable neighbour
       fuel -= decay_rate; fuel <= 0 → convert to SMOKE

SMOKE: chance to move up/sideways into empty cell
       life -= decay_rate; life <= 0 → cell becomes empty

Вода: повільний випадок

Водоподібні клітинки додають одне правило поверх поведінки піску, що падає: якщо водоподібна клітинка не може впасти вниз або по діагоналі, вона намагається переміститися горизонтально у порожній сусід, у будь-якому напрямку. Цей додатковий варіант – розповсюдження по горизонталі при блокуванні знизу – і є те, що перетворює правило піску, що падає, на такий, що утворює водойми, знаходить свій рівень і розтікається у ровелю замість накопичення в кучугурі.

Жодного з цього немає в тому, що є Navier-Stokes розв'язувач; немає тиску, немає терміну в’язкості, немає вектор швидкості на частинку. Що це захоплює – це якісний характер поведінки кожного матеріалу – купи піску, вода розтікається, дим підіймається і товщіє, вогонь їсть паливо та виробляє дим – що є рівнем реалізму, який потрібен для відчуття живості та реактивності у пісочницю на основі кліків та малювання з 60 кадрами в секунду на сітці з десятків тисяч клітинок.

Frequently asked questions

Чи це справжня симуляція рідини, як у гейм-двигуні, наприклад, вода?

Ні — це клітинний автомат, такий же тип, як Гра Життя Конвея. Кожна клітина просто перевіряє кілька сусідніх клітин і слідує за коротким списком правил руху та перетворення; не розв’язується поле тиску чи швидкості, що й робить симуляцію достатньо швидкою для роботи на великій сітці в реальному часі.

Чому з піску утворюються акуратні трикутні купи?

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

Як поширюється вогонь і врешті-решт згасає?

Кожна клітинка вогню має шанс підпалити горючу сусідню клітину що кадр, тому вогняна лінія повільно просувається на одну клітину за раз; кожне палаюче клітинка також має зменшувальне значення палива, і коли це досягає нуля, клітинка перетворюється на дим, що пояснює мерехтіння, поширення та зрештою відступ вогню до повільного диму.

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

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

▶ Відкрити симуляцію Magic Sand & Smoke

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

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