class Field

Kapselung des Wissens ueber das Layout des Spielfeldes

Public Classes

class FailedPositionCalculationException: public Exception
Positionsbestimmung ist fehlgeschlagen
class FailedTriangulationException: public Exception
Standpunktbestimmung ist fehlgeschlagen

Public Methods

static double computeFaceDir( const Array<StableObject>& seenLines )
Berechnet die absolute Blickrichtung
Field()
Erzeugt ein neues Feld
static double fieldLength()
Gibt die Laenge des Feldes zurueck
static double fieldWidth()
Gibt die Breite des Feldes zurueck
double goalWidth()
Gibt die Breite des Tores zurueck, diese wird im Konstrukter aus dem Configuration-Objekt ausgelessen und damit aktualisiert
static bool isInsideField(const Vector& aPoint)
Liefert YES, wenn sich der Punkt innerhalb des Spielfeldes befindet
static double kickoffCircleRadius()
Gibt den Radius des Anstosskreis zurueck
static double penaltyAreaLength()
Gibt die Laenge des Strafraums zurueck
static double penaltyAreaWidth()
Gibt die Breite des Strafraums zurueck
const Vector& posOfPoint(int anId)
Gibt die Position eines Punktes zurueck
ViewPoint triangulateViewPoint( const Array<StableObject>& seenLines, const Array<StableObject>& seenFlags )
Berechnet den Blickpunkt

Private Fields

static const double theFieldLength
Die Feldlaenge
static const double theFieldWidth
Die Feldbreite
static Vector theFlagPositions[]
C-Array der Positionen aller Flaggen
static const Vector theGoalPositions[]
C-Array der Positionen der Tore
static double theGoalWidth
Die Torbreite, diese wird aus den Configuration-Objekt aktualisiert
static const double theKickoffCircleRadius
Der Radius des Anstosskreises
static const double thePenaltyAreaLength
Die Strafraumlaenge
static const double thePenaltyAreaWidth
Die Strafraumbreite

Private Methods

Vector computePosFromFlag( const StableObject& flag, double faceDir )
Berechnet aus der relativen Position einer mit ihrer Id gegebenen Flage und dem absoluten Blickwinkel, die eigene absolute Position

Documentation

Kapselung des Wissens ueber das Layout des Spielfeldes. Hier koennen absolute Positionen von Flaggen, Toren und Linien erfragt werden. Ausserdem findet sich hier die Berechnung eines Blickpunktes aus einer Reihe von relativen Positionsangaben.

Sinn der Klasse ist es, die Daten eines Fussballfeldes wegzukapseln.

Quelltext

[Header | [Implementierung]

CVS Informationen zum Interface

  **************************************************
  *
  * Aktueller Stand
  *
  *   $RCSfile: Field.h,v $
  *   $Revision: 1.21 $
  *   $Date: 1998/08/14 13:20:32 $
  *   $Author: myritz $ 
  *
  **************************************************
  
Field()
Erzeugt ein neues Feld. Bei der Erzeugung wird die aktuelle Breite des Tores aus dem globalen Configuration-Objekt gelesen und die Positionen der entsprechenden Flaggen neu gesetzt.

class FailedTriangulationException: public Exception
Standpunktbestimmung ist fehlgeschlagen

class FailedPositionCalculationException: public Exception
Positionsbestimmung ist fehlgeschlagen

ViewPoint triangulateViewPoint( const Array<StableObject>& seenLines, const Array<StableObject>& seenFlags )
Berechnet den Blickpunkt. Enthaelt das Linien-Array nur ein Objekt, wird davon ausgegangen, dass man sich innerhalb des Spielfeldes befindet.
Throws:
FailedTriangulationException Kann auftreten, wenn entweder die Ids der uebergebenen Objekte nicht vom erwarteten Typ sind (also der erste Parameter keine Linie oder der zweite keine Flagge/Tor ist. Ausserdem wird die Exception erzeugt, wenn ein ünmoeglicher" Fall beim Triangulieren auftritt.
FailedPositionCalculationException Wird erzeugt, wenn eine Linie aber keine Flagge gesehen wurde. (Die Blickrichtung kann bestimmt werden, aber nicht die Position des Spielers.)
Returns:
ViewPoint-Objekt, das den berechneten Blickpunkt enthaelt.
Parameters:
seenLines - Die gesehenen Linien.
seenFlags - Die gesehenen Flaggen und Tore.

static bool isInsideField(const Vector& aPoint)
Liefert YES, wenn sich der Punkt innerhalb des Spielfeldes befindet

const Vector& posOfPoint(int anId)
Gibt die Position eines Punktes zurueck. Ein Punkt kann entweder eine Flagge oder ein Tor sein. Weil die Positionen einzelner Torflaggen vor dem Spiel noch nicht feststehen (Torbreite wird aus server.conf ausgelesen) ist diese Methode keine Klassenmethode.
Throws:
InvalidIdException wenn die Id keine existierende Flagge/Tor beschreibt.
Returns:
Vektor, der die absolute Position des Punktes auf dem Spielfeld beschreibt.
Parameters:
anId - Die Id eines Punktes (wie in Gemeinsame Deklarationen)

static double fieldLength()
Gibt die Laenge des Feldes zurueck.

static double fieldWidth()
Gibt die Breite des Feldes zurueck.

double goalWidth()
Gibt die Breite des Tores zurueck, diese wird im Konstrukter aus dem Configuration-Objekt ausgelessen und damit aktualisiert

static double penaltyAreaLength()
Gibt die Laenge des Strafraums zurueck.

static double penaltyAreaWidth()
Gibt die Breite des Strafraums zurueck.

static double kickoffCircleRadius()
Gibt den Radius des Anstosskreis zurueck

static double computeFaceDir( const Array<StableObject>& seenLines )
Berechnet die absolute Blickrichtung. Es wird eine der uebergebenen Linien ausgewaehlt, um daraus den Blickwinkel zu bestimmen.
Throws:
FailedTriangulationException Wird erzeugt, wenn keine Linie gesehen wurde, oder wenn sich aus der ausgewaehlten Linie der Blickwinkel nicht eindeutig ergibt. (Das ist in einem selten auftretenden Spezialfall fuer die rechte Linie der Fall.)
Parameters:
seenLines - Array mit den gesehenen Linien.

Vector computePosFromFlag( const StableObject& flag, double faceDir )
Berechnet aus der relativen Position einer mit ihrer Id gegebenen Flage und dem absoluten Blickwinkel, die eigene absolute Position

static Vector theFlagPositions[]
C-Array der Positionen aller Flaggen. Als Index kann FlagId - MINFLAG verwendet werden. Das Array hat FLAGCOUNT Eintraege.

static const Vector theGoalPositions[]
C-Array der Positionen der Tore. Als Index kann GoalId - MINGOAL verwendet werden. Das Array hat GOALCOUNT Eintraege.

static const double theFieldLength
Die Feldlaenge

static const double theFieldWidth
Die Feldbreite

static double theGoalWidth
Die Torbreite, diese wird aus den Configuration-Objekt aktualisiert

static const double thePenaltyAreaLength
Die Strafraumlaenge

static const double thePenaltyAreaWidth
Die Strafraumbreite

static const double theKickoffCircleRadius
Der Radius des Anstosskreises


This class has no child classes.

alphabetic index hierarchy of classes


Hauptseite

Einleitung | Architektur | Dynamische Zusammenhänge | Referenzhandbuch | FAQ | Anhang A | Anhang B

generated by doc++