05.10.2013 Aufrufe

Steering Behaviors

Steering Behaviors

Steering Behaviors

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Steering</strong> <strong>Behaviors</strong><br />

Autoren: Thomas Feilkas, Christian Schnellhammer<br />

Betreuer: Prof. Jürgen Sauer Regensburg<br />

wie genau die Darstellung sein soll und wieviel Speicher man dafür zur<br />

Verfügung hat.<br />

Eine Erweiterung davon sind sogenannte „Quadtrees“. Die Welt wird hierbei in<br />

vier Rechtecke eingeteilt. Jedes Rechteck, wird rekursiv in 4 weitere Rechtecke<br />

aufgeteilt, falls sein Inhalt nicht einen gewissen Anteil an Hindernissen<br />

aufweist. Durch diese Aufteilung erhält man einen Graphen, der sich sehr nah<br />

an die ursprüngliche, kontinuierliche Welt hält, wobei hier der<br />

Speicherverbrauch etwas niedriger anzusetzen ist, als es bei der einfachen Tile<br />

Methode der Falls ist.<br />

Erstellen von Pfaden<br />

Der am weitesten verbreitete Algorithmus zum schnellen Auffinden von<br />

Pfaden innerhalb eines Graphen ist der als „A*“ bezeichnete Algorithmus. Er<br />

ist eine Erweiterung der Breitensuche und berücksichtigt auch Gewichtungen<br />

bei der Erstellung der Pfade. Grundlage sind zwei Datenstrukturen, die Open-<br />

List in der die als Nächstes zu betrachtenden Knoten abgelegt werden und die<br />

Closed-List, in der die bereits bewerteten Knoten gespeichert werden. Im Falle<br />

von A* ist die Open-List im allgemeinen als Prioritätswarteschlange<br />

implementiert. Knoten mit niedrigeren Bewertungen, d.h. mit am wenigsten<br />

Kosten verursachenden Pfaden, werden bei der weiteren Suche favorisiert.<br />

Dadurch werden zunächst die momentan am besten Erscheinenden Pfade<br />

weiter verfolgt. Im Falle einer homogenen Simulationslandschaft wird durch<br />

dieses Bewertungs- und Auswahlschema sofort ein direkter Pfad zum Ziel<br />

erzeugt, ohne das zu viele Knoten überprüft werden müssen. Für die Closed-<br />

List eignen sich mehrere Datenstrukturen, diese Implementierung verwendet<br />

ein einfaches Array. Die Bewertung der Knoten geschieht anhand einer<br />

sogenannten „Distanzfunktion“. Diese Funktion liefert eine Schätzung zurück,<br />

wie hoch die Kosten für einen direkten Pfad von diesem Knoten bis zum Ziel<br />

sein werden. Hierfür gibt es vier mögliche Implementierungen. Der<br />

47

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!