Zachowania grupowe: klucz ptaków

Wybierz język interfejsu programu:

Ogólny opis symulacji

Zadaniem programu jest demonstracja grupowego zachowania osobników - ptaków w kluczu. Każdy osobnik kieruje się prostymi regułami o zasięgu lokalnym, nie wiedząc jednocześnie nic o zachowaniu grupy jako całości. Zachowanie całej grupy staje się w efekcie złożone.


Rys.1. Klucz

Każdy osobnik podąża wg następujących zasad:

  • Separacja - Jeżeli jakikolwiek inny osobnik jest zbyt blisko, skręć aby uniknąć kolizji.
  • Wyrównanie - Wyrównaj kierunek swojego lotu do kierunku najbliższych sąsiadów.
  • Spójność - Steruj w stronę środka ciężkości grupy najbliższych sąsiadów.

Zasady symulacji

Każdy osobnik modyfikuje swoje zachowanie w oparciu o obserwację trzech sąsiadów:

  • lewego sąsiada,
  • lidera – najbliższego osobnika przed nim,
  • prawego sąsiada.


Rys. 2. Sąsiedzi osobnika

Jeżeli osobnik nie posiada sąsiadów, staje się liderem grupy, zachowując zadany kierunek lotu. W ten sposób grupa jako całość posiada zawsze pewne ukierunkowanie i można obserwować zachowanie osobników w jej wnętrzu. Takie założenie wynika bezpośrednio z obserwacji natury – osobniki prowadzące kierują się dodatkowymi bodźcami, dzięki czemu wiedzą, jaki zachowywać kierunek lotu. Wpływ tych bodźców nie jest istotny dla celów symulacji zachowania grupowego.

Implementacja

Przebieg symulacji:
Dla każdego osobnika X wykonaj:

  1. Wyszukaj najbliższych sąsiadów osobnika X. Wybierany jest najbliższy osobnik z przodu - w stożku (-45deg,45deg) w stosunku do wektora prędkości, lewy - w stożku (-135, -45) oraz prawy - w stożku (45, 135).
  2. Zastosuj zasadę wyrównania. Wyznacz średni wektor kierunkowy na podstawie wszystkich sąsiadów. Następnie skieruj wektor prędkości w stronę obliczonej średniej sąsiadów, aby jego prędkość po obliczeniach nie zmieniła się.
  3. Zastosuj zasadę spójności. Wyznacz środek ciężkości sąsiadów osobnika. Oblicz wektor będący różnicą mięcy celem a aktualną pozycją. Dodaj ten przeskalowany wektor do przeskalowanego wektora prędkości osobnika (new_v = (1 - wsp) * old_v + wsp * diff). W ten sposób osobnik jest w stanie poruszać się zarówno w boki jak i w przód i tył.
  4. Zastosuj zasadę separacji. Znajdź najbliższego z sąsiadów. Jeśli odległość od niego jest mniejsza niż zadany próg krytyczny, obróć wektor prędkości (skręć) w stronę przeciwną do położenia danego sąsiada.
  5. Unikaj kolizji z kursorem myszy w ten sam sposób, jaki wykonywała to separacja.
  6. Przeskaluj prędkość, jeśli przekracza maximum lub minimum.
  7. Przemieść osobnika zgodnie z wektorem prędkości.

Opcje programu

Kontrola
Restart Uruchamia symujację ponownie. Pozycje początkowe ptaków losowane są na nowo.
Stop/Start Zatrzymuje/wznawia symulację.
Następna klatka (+) W przypadku zatrzymanej symulacji, wykonuje kolejny krok i przerysowuje ekran.
Opcje podstawowe
Ilość ptaków Zmienia ilość ptaków w kluczu.
Maksymalna/minimalna prędkość. Ustawia limity prędkości ptaków.
Kroków na klatkę Pozwala na zwiększenie ilości kroków symulacji na każdą wyrenderowaną klatkę obrazu.
Zaawansowane
Separacja Włącza/wyłącza zasadę separacji.
Odległość kolizijna Odległość od której ptak zaczyna zmieniać kierunek lotu.
Obrót przy kolizji Wielkość obrotu w momencie zbliżania się do przeszkody.
Wyrównanie Włącza/wyłącza zasadę wyrównania.
Siła wyrównania Zmienia siłę wpływu kierunków sąsiadów na kierunek danego osobnika.
Spójność Włącza/wyłącza zasadę spójności.
Siła wyrównania Zmienia siłę wpływu położenia sąsiadów na ruch osobnika.
Ucieczka od kursora Włącza/wyłącza ucieczkę od kursora.
Zasięg kursora Odległość od kursora, od której ptak zaczyna zmieniać kierunek lotu.
Obrót przy ucieczce Wielkość obrotu w momencie zbliżania się do kursora.
Mapa
Przybliż/Oddal Zmienia skalę mapy.
Program i tekst: Piotr Dachtera
Przepisanie na javascript: Piotr Żurkowski
Prowadzący: Maciej Komosiński