01.02.2013 Aufrufe

MiCaDo Projektbericht - artecLab - Universität Bremen

MiCaDo Projektbericht - artecLab - Universität Bremen

MiCaDo Projektbericht - artecLab - Universität Bremen

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.

Kreatur B<br />

nächster<br />

Punkt<br />

Wegzielpunkt<br />

x<br />

x<br />

x<br />

Kreatur A<br />

Ausweichpunkt<br />

Abbildung 8.6: Realisierung der Berechnung<br />

des Ausweichweges der Kreatur A<br />

Kreatur B<br />

Kreatur A<br />

Abbildung 8.7: Der neue Weg der Kreatur A<br />

in unserer Realisierung<br />

Ist der nächste Wegpunkt hingegen nicht der Zielwegpunkt, sondern nur ein Zwischenwegpunkt<br />

des Gesamtweges, dann wird der ab diesen Wegpunkt veränderte Weg in die Berechnung des Ausweichpunktes<br />

und des Wegzielpunktes mit einbezogen (siehe Abbildung 8.10). Normalerweise ist<br />

der Wegzielpunkt genau doppelt so weit entfernt, wie die Kreatur A von B, also 2 · AB. In diesem<br />

Fall jedoch muss die noch fehlende Strecke auf den veränderten Weg umgelegt werden. Der Wegzielpunkt<br />

ist dann genau noch der fehlenden Strecke ((2 · AB) − AW) vom Zwischenwegpunkt entfernt.<br />

Bevor dieser Ausweichweg allerdings benutzt werden kann, wird noch überprüft, ob sich der Ausweichpunkt<br />

auch in einem entsprechenden Bereich befindet (siehe Abbildung 8.11), damit die Kreatur<br />

nicht im Zickzack läuft. Andernfalls wird ein Wegzielpunkt berechnet, der genau die Strecke AW<br />

vom Zwischenwegpunkt entfernt ist und der dann direkt von der Kreatur angelaufen wird. Dieser<br />

Fall tritt nur dann ein, wenn der Winkel zwischen den Geraden AW und WZ zu spitz ist. Dieser Sonderfall<br />

entsteht natürlich nicht nur wenn sich zwei Kreaturen auf dem selben Weg bewegen, sondern<br />

auch wenn die Wege sich kreuzen (siehe Abbildung 8.12 und 8.13).<br />

Die Berechnung des Ausweichweges unter Beachtung aller möglichen Fälle wird in der Aktion<br />

micado std avoid durchgeführt. Welche der kollidierenden Kreaturen nun wartet und welche ausweicht,<br />

wird dabei auch festgelegt, wobei zunächst die Kreatur, die als erstes die Kollision erkannt<br />

hat, versucht auszuweichen. Kann eine Kreatur ausweichen, so wird an die micado std avoid-Aktion<br />

73

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!