Пісочниця з падаючим піском — це двовимірний клітинний автомат, де кожен піксель є коміркою піску, води, лави, каменю, рослини, газу чи вогню, і кожна комірка підкоряється кільком простим локальним правилам. З цих правил виникає напрочуд живоподібна поведінка: пісок накопичується, вода знаходить свій рівень, лава підпалює рослини та утворює камінь під час контакту з водою. Та сама ідея лежить в основі досліджень сипких матеріалів, геологічних моделей і відомих ігор, як-от Powder Game та Noita.
next(x, y) = rule(state(x, y), neighbours(x, y)) — новий стан кожної комірки залежить лише від неї самої та її безпосередніх сусідів. Гравітація моделюється як прагнення перейти до (x, y+1), коли там порожньо, з діагональним запасним варіантом (x±1, y+1); порядок оновлення стовпців перемішується щокроку, щоб усунути напрямкове зміщення.
Жанр «падаючого піску» набув популярності після японської веб-іграшки Powder Game 2005 року, але базова ідея — що складні візерунки виникають з тривіальних локальних правил — та сама, яку Джон Конвей використав у своїй «Грі життя» 1970 року, одному з найбільш вивчених клітинних автоматів у всій математиці.
Фізика сипких матеріалів у браузері! Малюйте пісок, воду та тверді стінки. Спостерігайте, як пісок завжди прагне рівноважного кута, а вода заповнює улоговини.
Кожна піщинка або крапля перевіряє комірки нижче і нижче-по-діагоналі. Якщо вільно — падає. Пісок накопичується до кута насипки (~34°), вода розливається в усі сторони. Прості правила, складна поведінка.
Виберіть матеріал: пісок, вода, кам'яні стіни, лава. Клацайте і перетягуйте для малювання. Спробуйте побудувати піщані дюни, водоспади, схованки піску під камінням.
Кут природного нахилу для сухого піску — близько 34°. Це мінімальний кут, при якому пісок залишається стійким без обвалу. Саме тому пісочні замки мають нахилені стіни — це критичний кут Кулона.
Ця пісочниця — двовимірний клітинний автомат, у якому екран поділено на сітку маленьких комірок, кожна з яких містить один матеріал: пісок, воду, лаву, камінь, рослину, газ або пару й вогонь, що утворюються внаслідок реакцій. Кожна комірка підкоряється кільком простим локальним правилам, які виражаються як next(x,y) = rule(state, neighbours). З цих тривіальних правил у межах усієї сітки виникає складна, живоподібна поведінка сипких матеріалів і рідин.
Сітку сканують знизу вгору, перемішуючи порядок стовпців на кожному кроці, щоб усунути напрямкове зміщення. Пісок падає й зсувається по діагоналі до свого кута природного нахилу, вода спадає, а потім розтікається вбік, газ і пара піднімаються, а сусіди реагують: лава, що зустрічає воду, перетворюється на камінь і пару, а лава чи вогонь підпалюють рослину. Такі моделі лежать в основі досліджень сипких потоків, геології та ігор на кшталт Powder Game і Noita.
Що таке симуляція «падаючого піску»?
Це клітинний автомат, де полотно є сіткою комірок, кожна з яких зберігає один тип матеріалу. Кожна комірка щокадру підкоряється простим локальним правилам, і колективний результат виглядає так, ніби пісок, вода й вогонь поводяться фізично. Це пісочниця-іграшка, а не точний розв'язувач рідин.
Як насправді працює симуляція?
На кожному кроці фізики сітку сканують від нижнього ряду вгору. Кожна непорожня комірка, що не є каменем, намагається переміститися за правилом свого матеріалу, і перевіряються реакції між сусідніми комірками. Новий стан будь-якої комірки залежить лише від неї самої та її безпосередніх сусідів.
Що роблять елементи керування?
Кнопки матеріалів обирають, чим ви малюєте: Пісок, Вода, Лава, Камінь, Рослина, Газ або Стерти. Розмір пензля задає радіус круглої області, яку ви малюєте, від 1 до 20 комірок. Швидкість задає, скільки кроків фізики виконується на один відмальований кадр, від 1 до 8. Очистити спорожнює всю сітку.
Сканування стовпців зліва направо зміщувало б рух в один бік, тож пісок і вода дрейфували б у переважному напрямку. Перемішування порядку стовпців на кожному кроці усереднює це, даючи симетричні, природніші на вигляд купи та потоки.
Комірка піску спершу намагається впасти прямо вниз у порожню комірку або витіснити воду під собою. Якщо заблоковано, вона намагається зсунутися по діагоналі в порожню комірку знизу-зліва чи знизу-справа. Саме це діагональне зсування будує характерну похилу купу, а не вертикальний стовпчик.
Лава, що падає на воду, перетворює воду на камінь і залишає по собі пару. Лава й вогонь можуть підпалити сусідні комірки рослини, які потім горять як вогонь. Вогонь поширюється на прилеглу рослину, вигорає в газ, а газ повільно розсіюється. Рослина також може повільно поширюватися там, де торкається води.
Лише приблизно. Вода падає, коли під нею є порожнє місце, інакше намагається розтектися вбік на до трьох комірок. Це дає переконливе утворення калюж і вирівнювання, але ігнорує тиск, в'язкість і нестисливість, тож це якісне наближення, а не розв'язувач рідин Нав'є — Стокса.
Вона передає якісну суть руху сипких матеріалів і рідин: гравітацію, накопичення, течію та прості фазові реакції. Вона не є кількісно точною, бо комірки переміщуються щонайбільше на один крок за кадр на грубій сітці за ймовірнісними правилами, без реальних сил, імпульсу чи одиниць.
Швидкість задає, скільки кроків фізики обчислюється на кожен кадр, який малює браузер. За значення 1 симуляція просувається на один крок за кадр; за 8 — на вісім, тож матеріали осідають і реагують значно швидше ціною більших обчислень на кадр.
Порожнім коміркам нічого рухати, а камінь розглядається як статичне тверде тіло, що не падає й не реагує. Пропускання обох тримає покадровий цикл швидким, тож симуляція може плавно опрацьовувати тисячі активних комірок, водночас перевіряючи кожну потенційно рухому частинку.
Обидві — клітинні автомати, чия глобальна поведінка виникає з простих правил, застосованих до кожної комірки на основі її сусідів. «Гра життя», створена 1970 року, популяризувала ідею, що тривіальні локальні правила можуть породжувати багаті візерунки; іграшки «падаючого піску» застосовують той самий принцип до сипких матеріалів і рідин.