MiCaDo Projektbericht - artecLab - Universität Bremen
MiCaDo Projektbericht - artecLab - Universität Bremen
MiCaDo Projektbericht - artecLab - Universität Bremen
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