4. Boidy.

Transkrypt

4. Boidy.
4. Boidy.
Modeklując rzeczywistość, chcielibyśmy zaprojektować stukturę która będzie wykonywać określoną czynność. Jeżeli model ten reprezentowany jest przez jednego
osobnika, wówczas podajemy wszystkie niezbędne parametry, które określą sposób
zachowania tego osobnika. Załóżmy, że chodzi nam o stworzenie modelu graficznego, który będzie przedstawiał osobnika w ruchu. Wówczas określimy min. wielkość
osobnika, obszar po którym się będzie poruszał, prędkość, trajektorię ruchu.
Załóżmy jednak, że chcielibyśmy stworzyć model, w którym będą się poruszały
grupy osobników. Określenie parametrów ruchu wszystkich osobników musi zawierać
parametry ruchu dla każdego osobnika. Ponadto musi zawierać pewne reguły zachowania jednego osobnika w stosunku do pozostałych. W tym przypadku modelujemy
zachowanie grupy osobników, nie zaś jednego osobnika. Możemy więc określić rguły
w taki sposób, by bez względu na liczbę osobników realizowały żadane zagadnienie
(w tym przypadku ruch grupy osobników). Takie zagadnienie modelujące zachowanie
”stada” osobników nazywamy boidami.
Przjmijmy pewne nazewnictwo oraz określmy ogólne reguły poruszania się osobników. Niech w rozważanym przez nas modelu stado osobników będzie stadem boidów. Boidy mogą poruszać się tylko w wyznaczonym obszarze. Boid poruszając się
musi zachować odległość (Przez odległość rozumie się kulę o środku w środku bojda
i ustalonym promieniu. Jeżli boidy są zobarazowane w fromie animacji w R2 , a boid
jest kołem o promieniu r, to średek boida x0 , y0 jest środkiem kuli, zaś odległość jest
kulą o środku x0 , y0 i promieniu r + 2.) od innych boidów. Boidy poruszają się w
wyznaczonym kierunku. Może nim być środek grupy, inny boid, pewien obszar lub
opisana fukcją trajektoria ruchu.
Zaprojektujmy omawiany model w formie animacji w R2 . Niech pojednynczy
boid będzie kula o śrdku w punkcie x0 , y0 i promieniu r. Omówimy zasady, jakimi
należy się kierować projektując boidy.
Zasady wykorzystywane przy projektowaniu boidów.
1. Obszar, w którym poruszają się boidy. Projektując animację grupowego
zachowania osobników należy ustalić obszar, w którym te osobniki będą się
poruszały. Może to być obszar ograniczony pewną figurą mniejszy od wielkości
ekranu, lub inny większy obszar (niekoniecznie ograniczony), w którym będą
poruszać się boidy. W pierwszym przypadku wszystkie osobniki są widoczne.
W dugim - należy umożliwić obserwowanie wybranej części obszaru.
2. Prędkość i kierunek ruchu. Założyliśmy, że w naszym przypadku boid jest
kulą o środku x0 , y0 i promieniu r. Aby określić prędkość i kierunek ruchu
należy uwzględnić położenie osobnika, gdyż przez prędkość boida będziemy
rozumieli zmianę położenia boida w jednostce czasu, zaś kierunek będzie wy1
znaczony przez nowe położenie boida. Zatem określenie prędkości i kierunku
ruchu będzie polegało na wyznaczeniu współrzednych boida po upływie jednostki czasu. (Załóżmy, że poruszamy się o stałą odległość w pojedynczym
ruchu. Pedkość boida będzie tym większa, im mniejsza jednostka czasu, co
którą zmienia się położenie boida.)
3. Podążanie do celu. W przypadku, gdy ruch boida polega na dążeniu do
celu (ustalonego punktu w obszarze, w którym poruszają się boidy), mamy z
góry wyznaczony kierunek ruchu. Jest nim prosta łącząca boida z celem, do
którego dąży ( a dokładnie prosta łącząca punkt x0 , y0 ze środkiem clu). W
tym przypadku należy więc określić prędkość, z jaką będzie się poruszał boid.
Możemy przyjąc, że w miarę zbliżania się do celu prędkość boida musi maleć.
Jest to konieczne do precyzyjnego osiągnięcia celu. Zmniejszenie prędkości
będzie wymagało zmniejszenia długości pojedynczego kroku.
Należy zauważyć, że cel do którego dązymy nie musi być statyczny. Może
nim być np. inny boid, który jest w ruchu. Wówczas punktem odniesienia jest
położenie ”boida – celu” w danym momencie.
4. Odległość między boidami. Ponieważ mamy doczynienia z ruchem grupy
osobników należy uwzględnić relacje między nimi. Chcemy, by poszczególne
boidy nie nachodziły na siebie. Takie żądanie jest zgodne z zasadami ruchu
w rzezczywistym świeci. Jeżeli bowiem mamy ruch w przestrzeni jakiś ciał
to mogą się one co najwyżej zderzyć. Aby uwzględnić tę zasadę należy przyjąć, że w pewnej (ustalonej odległości) od boida nie może znajdowaćsię inny
boid. Realizacja tego założenia może polegać na analizowaniu ruchu. Wystarczy sprawdzić, czy nowe położenie boida nie będzie w obszarze, w którym już
znajduję się inny boid. Jeśli tak jest, należy np. zmniejszyć prędkość boida.
5. Omijanie przeszkód. Wyróżniamy dwa rodzje przeszkód. Mogą nimi być inne bojdy lub ciała stałe, np. krawędź pola, ściana. Jeśli przeszkodami są bojdy
– należy zmniejszyć prędkość; jeśli przeszkodą jest np. ściana – należy zmienić kierunek ruchu. (Trzeba tu pamiętać o ustaleniu odległości, po osiągnięciu
której omijamy przeszkodę.)
6. Podążanie wyznaczoną ścieżką. Od boidów możemy żadać, by poruszały
się ustaloną scieżką. Przez ścieżkę rozumiemy obszar w określonej odległości od
pewnej funkcji; tzn. istnieje linia, która mówi, że boidy mają się poruszać tylko
wzdłuż tej linii w określonej odległości od niej. Linia ta może przebiegać przez
obszar poruszania się boidów; może również być linią brzegową tego obszaru.
Drugi przypadek oznacza, że boidy mają poruszać sie w pewnej odległości od
brzegów obszaru.
Kilka przykładów i ilustrujących je apletów można znaleźć na stronie:
htttp://www.red3d.com/cwr/steer/
Zadanie
Należy napisać program ilustrujący zachowanie boidów. Urzytkownik podaje liczbę
boidów oraz sposób poruszania się. Należy przewidzieć trzy sposoby poruszania się:
2
1. Do celu statycznego. Wówczas urzytkownik podaje współrzędne celu.
2. Do celu dynamicznego. Jest nim jeden boid, który porusza się w losowo
zmieniającym się kierunku.
3. Wzdłuż krawędzi obszaru.
Obszar okrśla programista. Początkowe położenie boidów i ich początkowa prędkość
są losowe.
3

Podobne dokumenty