Steering Behaviors
Steering Behaviors
Steering Behaviors
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