🐟 Ławica ryb 3D
Setki ryb pływają w ławicy według algorytmu Boids w pseudotrójwymiarowym oceanie. Rekin poluje z dołu; ryby rozdzielają się, zbierają na nowo i uciekają dzięki siłom separacji, wyrównania i spójności.
Co pokazuje symulacja
Symulacja modeluje zbiorowe zachowanie zwierząt przy użyciu algorytmu Boids Craiga Reynoldsa (1986). Każda ryba kieruje się trzema prostymi lokalnymi regułami — separacją, wyrównaniem i spójnością — a mimo to globalny efekt to realistyczne, płynne ławicowanie. Gdy zbliża się rekin-drapieżnik, ryby przechodzą w reakcję ucieczki, generując spektakularną dynamikę rozdzielania się i ponownego łączenia.
Jak korzystać
Dostosuj Liczbę ryb, Prędkość oraz trzy promienie sił ławicowania. Włącz lub wyłącz drapieżnika, aby porównać ławicowanie z zagrożeniem i bez niego. Wypróbuj duży promień spójności dla ciasnych ławic lub duży promień wyrównania dla wysoce zsynchronizowanych grup.
Czy wiesz, że...
Ławice ryb mylą drapieżników dzięki efektowi dezorientacji — drapieżnik celujący w jedną rybę gubi ją w tłumie. Modele podobne do Boids są wykorzystywane także w animacji (np. stado w Lwim Królu) oraz w koordynacji autonomicznych rojów dronów.
O tej symulacji
Ta symulacja przedstawia model ławicowania Boids (Craig Reynolds, 1986) jako widzianą z góry pseudo-trójwymiarową ławicę ryb. Każda ryba skanuje pobliskich sąsiadów w obrębie trzech niezależnych promieni — separacji, wyrównania i spójności — i łączy wynikowe wektory sterujące we własny kierunek ruchu w każdej klatce. Polujący rekin dodaje czwartą siłę, ucieczkę, która przejmuje kontrolę nad ławicowaniem, gdy ryba wejdzie w promień paniki, tworząc zachowanie rozdzielania się i ponownego łączenia, jakim prawdziwe ławice bronią się przed drapieżnictwem.
🔬 Co pokazuje
200 ryb (regulowane 50–400) jest przypisanych do jednej z trzech warstw głębokości, każda z własną paletą barw i rozmiarem, dzięki czemu nakładające się ławice sprawiają wrażenie trójwymiarowego oceanu na płaskim płótnie. Każda ryba reaguje tylko na sąsiadów w sąsiednich warstwach, sprawdzając kwadrat odległości względem promieni separacji (domyślnie 28px), wyrównania (55px) i spójności (80px), by co klatkę obliczyć siłę sterującą, obok rekina kierującego się w stronę centroidu ryb oraz ryb uciekających po wejściu w promień paniki 110px.
🎮 Jak korzystać
Przeciągnij Liczbę ryb i Prędkość, aby zmienić skalę i tempo, a następnie poszerz lub zawęź trzy promienie ławicowania, aby zobaczyć ciaśniejsze lub luźniejsze ławice oraz bardziej lub mniej zsynchronizowane skręty. Włącz/wyłącz Drapieżnika, aby porównać spokojne ławicowanie z dynamiką paniki, i dostosuj Prędkość rekina oraz Promień paniki, aby utrudnić lub ułatwić ucieczkę przed polowaniem. Panel statystyk na żywo pokazuje liczbę ryb, liczbę skupisk (flood-fill po promieniu spójności), liczbę panikujących ryb i FPS.
💡 Czy wiesz, że...
Oryginalna praca Reynoldsa o Boids z 1987 roku nie wymagała lidera ani globalnego zestawu reguł — ławicowanie, stadowanie i zbieranie w stada wyłaniają się z trzech czysto lokalnych reguł stosowanych jednocześnie przez każdą jednostkę. Prawdziwe ławice ryb stosują tę samą sztuczkę wobec drapieżników: rekin celujący w jedną sylwetkę w szybko poruszającym się tłumie wielokrotnie traci namiar — to zjawisko nazywane efektem dezorientacji, dokładnie dlatego ryby w tej symulacji rozpraszają się i ponownie łączą, zamiast po prostu uciekać po linii prostej.
Najczęściej zadawane pytania
Jakie są trzy reguły Boids i co robią?
Separacja odsuwa każdą rybę od zbyt bliskich sąsiadów, zapobiegając kolizjom. Wyrównanie kieruje rybę tak, by dopasować się do średniego kierunku sąsiadów w promieniu wyrównania, tworząc zsynchronizowane skręty. Spójność kieruje rybę w stronę średniej pozycji sąsiadów w promieniu spójności, utrzymując grupę razem. Wszystkie trzy siły są sumowane co klatkę, dając jeden ostateczny wektor sterujący dla każdej ryby.
Dlaczego ryby wyglądają, jakby pływały w 3D na płaskim płótnie?
Każdej rybie losowo przypisywana jest jedna z trzech warstw głębokości o odrębnej palecie barw i rozmiarze — większe, jaśniejsze ryby dla warstwy powierzchniowej i mniejsze, ciemniejsze dla warstwy głębokiej. Ryby ławicują tylko z sąsiadami w tej samej lub sąsiedniej warstwie i są rysowane od najgłębszej warstwy wzwyż w każdej klatce, więc warstwowanie wraz z przesłanianiem tworzy przekonującą iluzję głębi bez żadnej rzeczywistej geometrii 3D.
Jak rekin decyduje, gdzie polować?
Rekin oblicza centroid (średnią pozycję) wszystkich ryb na ekranie i kieruje się w jego stronę ze stałym niewielkim przyspieszeniem, ograniczonym ustawieniem Prędkości rekina. Nie celuje w pojedyncze ryby — po prostu ściga środek masy tłumu, dlatego ławica, która rozdzieli się na dwa skupiska, może naprawdę go zdezorientować i kupić czas na ucieczkę obu połówkom.
Co wywołuje panikę u ryby i jak zmienia to jej zachowanie?
Ryba wchodzi w tryb paniki, gdy znajdzie się w Promieniu paniki rekina; im bliżej, tym silniejsza dodatkowa siła ucieczki odpycha ją bezpośrednio od rekina. Panikujące ryby są rysowane w ostrzegawczym żółto-pomarańczowym kolorze, pływają nawet dwa razy szybciej niż ich normalna prędkość maksymalna i szybciej poruszają ogonem, a panika stopniowo zanika, gdy rekina nie ma już w pobliżu.
Jak obliczany jest wskaźnik „Skupiska”?
Symulacja wykonuje przeszukiwanie zalewowe (przeszukiwanie wszerz) po tablicy ryb: zaczynając od nieodwiedzonej ryby, wielokrotnie dodaje do tej samej grupy każdą inną nieodwiedzoną rybę w promieniu spójności, po czym przechodzi do kolejnej nieodwiedzonej ryby i zaczyna nową grupę. Całkowita liczba grup utworzonych w ten sposób to liczba skupisk pokazywana w panelu statystyk, aktualizowana mniej więcej sześć razy na sekundę.