Aihepiiri: simulaatiot
Seuraa johtajaa -simulaatio
Tee "seuraa johtajaa"-simulaatio. Tarkoituksena on, että lauman yksilöistä yksi on johtaja, joka liikkuu jossain määrin enemmän tai vähemmän satunnaisesti, ja muut seuraavat vain tätä yksilöä asettumatta hänen tielleen tai törmäilemättä toisiinsa. Ohjelma visualisoi yksilöiden liikettä.
Lauman johtajan liikettä voi ohjata yhdistelemällä sopivasti kahta eri ominaisuutta:
- johtaja hakeutuu satunnaisesti valittuihin paikkoihin ympäristössään (Seeking)
- johtaja vaeltaa pehmeästi (tekemättä äkkijyrkkiä käännöksiä) (Wandering)
Johtajaa seuraavan lauman jäsenet voi muodostaa seuraavien ominaisuuksien avulla
- lauman jäsenet välttävät liiallista tungosta eli haluavat pitää ympärillään tarpeeksi vapaata tilaa (Separation)
- lauman jäsenet pyrkivät saavuttamaan jonkin tietyn pisteen, hidastaen kun ne lähestyvät tätä pistettä. Tämä lauman muiden jäsenten liikkeiden tähtäyspiste voi olla hieman johtajan takana, niin etteivät ne vahingossakaan törmää johtajaan ja jotta tämä selkeämmin erottuisi muusta laumastaan (Arrival)
- lisäksi lauman jäsenet pyrkivät väistämään, jos ne jostain syystä huomaavat olevansa johtajansa tiellä
Käytä yllä kuvattuja yksilönominaisuuksia lauman jäsenten itseohjaamisessa.
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
- merkkigraafinen käyttöliittymä
- mahdollisuus valita lauman koko (voi myös olla ettei laumassa ole muita kuin johtaja)
- mahdollisuus valita simuloitavan alueen koko (tätä voi tietysti rajoittaa järkevästi)
- mahdollisuus säätää johtajan ja lauman muiden jäsenten parametrejä
- alkutilanteessa lauman jäsenet ovat satunnaisissa paikoissa ja liikkuvat satunnaiseen suuntaan
Vaativa
- kuten keskivaikeaan työhön mutta graafisella käyttöliittymällä
- mahdollisuus säätää simulaation esitysnopeutta (tai vaikka pysäyttää aika kokonaan!)
- muita omia ominaisuuksia, kuten mahdollisuus muuttaa johtajan ja muiden lauman jäsenten käyttäytymiseen vaikuttavia parametreja lennosta, "kaapata" johtaja manuaaliseen ohjaukseen, tms.
VAROITUS : Tarvitset reaaliaikaiseen simulaatioon säikeitä (threads) niiden toimintaa esitellään luennoilla kurssiaikataulun mukaisesti
Lähteet
- Esimerkkiä voit katsoa Java appletista osoitteessa: http://www.red3d.com/cwr/steer/LeaderFollow.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/