(toiminnot)

hwechtla-tl: Ikosaedrimaailman toteutus

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


Tarkoituksena on tehdä maailman toteutus, joka soveltuu esim. strategiapelien pelaamiseen, ja jossa maailma on karkeasti pallomainen ja koostuu tasasivuisista kolmioista. Tämä viimeinen vaatimus (kolmioiden tasasivuisuus) on niin rajoittava, että maailmalla on vain yksi järkevä malli: venytetty ikosaedri (20-tahokas), jonka sivut koostuvat kolmiolaatoituksesta.

Mielestäni tässä mallissa on kaksi todella mielenkiintoista ja monella tavalla toteutettavaa ongelmaa:

  1. kolmiosolujen koordinaattijärjestelmä
  2. lyhyimpien reittien löytäminen ikosaedrimaailmassa

Näistä ensimmäinen on toteutettu täällä: http://sange.fi/~atehwa/icosa/ico.py . Huomaa, että kolmiosolun koordinaatit esitetään kolmikkona: (taho, y-koord. tahossa, x-koord. tahossa).

Toinen kohta vaatii huomattavasti enemmän koodin kirjoittamista, mutta minulla on hämärä käsitys siitä, kuinka toteutus tulisi tehdä: tarvitaan nelitasoinen A-tähti-algoritmi, jossa taso 1 toimii tason 2 heuristiikkana, taso 2 tason 3 heuristiikkana, ja tasolla 4 lasketaan tason 3 tuottamien "välilaskupaikkojen" väliset polut. Tässä ovat tasot:

  1. lasketaan, kuinka lähellä kukin sivu on toistaan. (Tähän riittää tavallinen Dijkstra tai leveyshakukin.)
  2. lasketaan, miten pitkä matka linnuntietä on kahden paikan välillä.
  3. lasketaan, mitä polkua tulee kulkea esteitä kiertämällä kahden paikan välillä.
  4. lasketaan, minkä kolmioiden kautta lyhin polku kahden edellistason polkupisteen välillä kulkee.

kategoria: projektit


kommentoi (viimeksi muutettu 27.06.2005 15:41)