Ohjelmoinnin peruskurssi Y2, kurssimateriaali

Aihepiiri: simulaatiot

Etusivulle

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

VAROITUS : reaaliaikaisen simulaation esityksessä voit tarvita säikeitä (threads). Niiden toimintaa esitellään kurssiaikataulun mukaisesti

Lähteet

Etusivulle