Інтерактивний акваріум, де рибки плавають разом за алгоритмом зграї (boids). Годуйте рибок, додавайте нових та спостерігайте за красою скоординованого руху без жодного лідера.
Рибки підпорядковуються трьом правилам: тримати дистанцію від сусідів (розділення), відповідати напряму групи (узгодженість) та залишатися близько до центру групи (зчеплення). Це породжує вражаючі кружляючі косяки.
Натисніть кнопку «Годувати», щоб кинути їжу і спостерігати, як рибки кидаються до неї. Використовуйте повзунки для збільшення кількості риб або зміни швидкості. Клацніть будь-де у воді, щоб розпорошити косяк.
Косяк риб не має лідера — кожна риба одночасно слідує і веде. Ця координація без централізованого управління дозволяє стаду реагувати на хижаків за мілісекунди — швидше, ніж будь-яка центральна нервова система.
Цей акваріум анімує зграю риб за допомогою класичної моделі роїння Boids, де кожна риба керує собою на основі трьох локальних правил — розділення, узгодженості та зчеплення — без жодного центрального лідера. Кожна риба бачить лише сусідів у межах невеликого радіуса, проте зі спільної поведінки виникають скоординовані, реалістичні зграї. Кинута їжа додає просту силу притягання, тож косяк у реальному часі перебудовується навколо найближчої крихти.
Емерджентне роїння за алгоритмом Boids Крейга Рейнольдса. У межах радіуса 160 пікселів кожна риба прямує до середньої позиції (зчеплення) та узгоджує свою швидкість із середньою швидкістю (узгодженість) сусідів, водночас відштовхуючись від будь-якої риби, ближчої за 80 пікселів (розділення). Їжа в межах 250 пікселів додає силу притягання, а швидкість обмежується щокадру, тож рух залишається плавним.
Повзунками задайте кількість риб (5–60), їхню максимальну швидкість (0.5–4) та силу зчеплення (0–0.05), яка визначає, наскільки щільно вони збираються. Натисніть «Кинути їжу» або клацніть будь-де на воді, щоб скинути крихти, до яких попливе косяк. Перемикайтеся між пресетами Тропічний, Арктичний і Глибина, щоб змінити палітру та освітлення.
Зграйність — це переважно стратегія захисту від хижаків. Щільний косяк зі схожих на вигляд риб запускає «ефект сум'яття», ускладнюючи хижакові вибір і відстеження якоїсь однієї цілі серед багатьох.
Вона моделює зграю риб як систему Boids — алгоритм роїння, винайдений Крейгом Рейнольдсом у 1986 році. Замість того щоб прописувати зграю як єдине ціле, кожна риба є незалежним агентом, який реагує лише на найближчих сусідів, тож упізнавані форми косяка — це емерджентний результат, а не щось запрограмоване напряму.
Щокадру кожна риба оглядає своїх сусідів і поєднує три сили керування: розділення відштовхує її від риб у межах 80 пікселів, узгодженість підлаштовує її напрямок під середній напрямок риб у межах 160 пікселів, а зчеплення притягує її до їхньої середньої позиції. Ці сили додаються, підсумкова швидкість обмежується заданим вами максимумом, і риба робить один крок.
Повзунок «Риби» задає, скільки агентів у акваріумі (від 5 до 60), і перебудовує зграю. «Швидкість» задає максимальну швидкість, якої може досягти кожна риба. «Зчеплення» (від 0 до 0.05) масштабує притягання до центру групи — низькі значення дають вільних, розкиданих риб, а вищі — щільні косяки у формі кулі.
Коли є їжа, кожна риба знаходить найближчу крихту і, якщо та в межах 250 пікселів, додає силу керування близько 0.15 у її напрямку. Крихта вважається з'їденою, щойно риба наближається на 10 пікселів, що збільшує лічильник «Нагодовано». Тож їжа діє як тимчасовий атрактор, накладений поверх звичайних правил роїння.
Це достовірна демонстрація принципу, що складна групова поведінка може виникати з простих локальних правил, що біологи й справді спостерігають у реальних косяках. Проте це не гідродинамічна чи біологічна симуляція: тут немає опору води, конусів зору, енергії чи видової поведінки, а рух відбувається у двох вимірах попри підводну сцену.