Aihepiiri: simulaatiot
Ruuhkasimulaatio
Tee ruuhkasimulaatio, joka mallintaa joukon liikehdintää sen pyrkiessä tiettyyn pisteeseen.
Joukkojen liikkumista voi simuloida hyvin yksinkertaisesti antamalla kullekin joukon yksilölle muutaman ehdon, joiden mukaan ne navigoivat.
Tähän perustuen toteuta eräänlainen "ryysissimulaatio", jossa kaikki isossa huoneessa olevat yksilöt haluavat poistua huoneesta sen ainoan pienen oven kautta yhtä aikaa ja mahdollisimman nopeasti.
Yksilöiden liikettä tällaisessa ryysissimulaatiossa ohjaavat seuraavat periaatteet:
huoneessa olijat hiljentävät vauhtiaan kun he huomaavat lähellä edessään muita, jotka liikkuvat hitaammin kuin he itse
(Braking)
- ovi "vetää huoneessa olijoita puoleensa"
(Seeking)
- huoneessa olijat välttävät seiniä
(Avoidance) (he eivät halua joutua seinää vasten eivätkä etenkään
seinään, koska se on mahdotonta)
huoneessa olijat välttävät törmäilyä toisiinsa muuttamalla suuntavektoriaan sopivasti. (Separation)
Yllä esitettyjä yksinkertaisia ehtoja käyttäen etsi ja säädä niille sopivat parametrit, niin että huoneessa olijat eivät törmäile toistensa päälle eivätkä ajaudu seinään (ainakaan pintaa syvemmälle!), mutta pääsevät huoneesta pois mielestään mahdollisimman nopeasti.
Halutessasi voit simuloida jotain muutakin vastaavaa tilannetta jossa joukkio rynnistää tiettyyn pisteeseen.
Huom! Aloita työ lukemalla Craig Reynoldin artikkeli "Steering behaviors for autonomous characters" http://www.red3d.com/cwr/steer/gdc99/.
Pyri toteuttamaan artikkelissa kuvattu "simple vehicle model" suhteellisen tarkkaan. Suuri osa tämän aiheen ongelmista liittyy siihen että jollain tavoin sovellettu malli ei tuotakaan haluttua käyttäytymistä.
Vaatimukset
Keskivaikea-vaativa
- graafinen käyttöliittymä
- omia ominaisuuksia, kuten mahdollisuus muuttaa simuloitavan alueen ja oviaukon kokoa, säätää liikkumisehtojen parametreja lennossa, tms.
VAROITUS : reaaliaikaisen simulaation esityksessä voit tarvita säikeitä (threads). Niiden toimintaa esitellään kurssiaikataulun mukaisesti
Lähteet
- Esimerkkinä voit vilkaista Java-applettia osoitteessa: http://www.red3d.com/cwr/steer/Doorway.html
- Erilaisista parvien käyttäytymismalleista (joista tämä tehtävänanto on erikoistapaus) yleensä voit lukea lisää Craig Reynoldsin sivustosta: http://www.red3d.com/cwr/boids/