class ModelledBall : public ModelledObject

Die interne Repraesentation des Balls im Weltmodell

Inheritance:


Public

Erzeugen und Zerstören
ModelledBall( int id = UNDEF_ID, const Vector& aPos = Vector(), const Vector& aSpeed = Vector(), const Reliability& aPosReliability = Reliability(Reliability::RANDOM), const Reliability& aSpeedReliability = Reliability(Reliability::RANDOM), int aLastTouchedBy = UNDEF_TEAM_ID, int aLastTouchedAtTime = -1)
Default-Konstruktor und neuer Ball mit Daten
ModelledBall( const MovingObject& aMovingObject, const Reliability& aPosReliability = Reliability(Reliability::RANDOM), const Reliability& aSpeedReliability = Reliability(Reliability::RANDOM), int aLastTouchedBy = UNDEF_TEAM_ID, int aLastTouchedAtTime = -1)
Modellierung eines wahrgenommenen Balls
virtual StorableObject* copy()
Legt eine Kopie des Objekts auf dem Heap an und liefert einen Zeiger darauf zurueck
Hilfsfunktionen zur Kick-Berechnung
bool isInKickRangeOfPlayer( const ModelledPlayer& aPlayer )
Ueberprueft, ob der Ball im Kick-Bereich ist
double effectiveKickPower( double power, const ModelledPlayer& kickingPlayer )
Es wird die tatsaechlich verfuegbare Kraft (effectiveKickPower) ausgerechnet
double kickPowerForSend( double power, const ModelledPlayer& kickingPlayer )
Es wird die Kraft bestimmt, die dem SoccerServer geschickt werden muss, damit effektiv der Ball mit der Kraft power beschleunigt wird
double maxEffectiveKickPower(const ModelledPlayer& kickingPlayer)
Liefert den maximalen sinnvollen effektiven Kick durch den der angegebene Spieler den Ball zur derzeitigen Situation beschleunigen kann
double normalizeKickPower(double power)
Normalisiert die Kraft fuer einen kick
double normalizeKickAngle(double angle)
Normalisiert den Winkel fuer einen kick
Interne Fehlerklassen.
class ModelledBallException: public ModelledObjectException
Allgemeine Fehlerklasse
class KickImpossibleException: public ModelledBallException
Fehlerklasse für illegalen Kickversuch
Konfigurierbare Werte erfragen
double size()
Klassenvariablen BallSize abfragen
double decay()
Klassenvariablen BallDecay abfragen
double maxSpeed()
Klassenvariablen BallMaxSpeed abfragen
double kickPowerRate()
Klassenvariablen KickPowerRate abfragen
double maxPower()
Klassenvariablen MaxPower abfragen
double minPower()
Klassenvariablen MinPower abfragen
double maxMoment()
Klassenvariablen MaxMoment abfragen
double minMoment()
Klassenvariablen MinMoment abfragen
double kickMargin()
Klassenvariablen KickMargin abfragen
void setSize(double aBallSize)
Klassenvariablen BallSize setzen
void setDecay(double aBallDecay)
Klassenvariablen BallDecay setzen
void setMaxSpeed(double aBallMaxSpeed)
Klassenvariablen BallMaxSpeed setzen
void setKickPowerRate(double aKickPowerRate)
Klassenvariablen KickPowerRate setzen
void setMaxPower(double aMaxPower)
Klassenvariablen MaxPower setzen
void setMinPower(double aMinPower)
Klassenvariablen MinPower setzen
void setMaxMoment(double aMaxMoment)
Klassenvariablen MaxMoment setzen
void setMinMoment(double aMinMoment)
Klassenvariablen MinMoment setzen
void setKickMargin(double aKickMargin)
Klassenvariablen KickMargin setzen
Konfigurierbare Werte setzen
void setClassVars()
liest die Werte aller Klassenvariablen aus dem Konfigurationsfile ein
Simulation
void simulateSteps( unsigned int simSteps = 1 )
Fuehrt Simulationsschritte aus
void accelerate( double power, double angle, const ModelledPlayer& byPlayer )
Beschleunigt
Werte abfragen
int lastTouchedBy()
Liefert Team, das zuletzt den Ball beruehrt hat
int lastTouchedAtTime()
Liefert die Zeit, zu der der Ball zuletzt berührt wurde
virtual String toString()
Beschreibung als String fuer die Ausgabe auf einem Terminal
Werte setzen
void setLastTouchedBy( int newLastTouchedBy )
Setzt Team, das zuletzt den Ball beruehrt hat, neu
void setLastTouchedAtTime( int newLastTouchedAtTime )
Setzt die Zeit, zu der der Ball zuletzt berührt wurde

Private Fields

static short isSetOnce
static double theBallDecay
static double theBallMaxSpeed
static double theBallSize
static double theKickMargin
static double theKickPowerRate
int theLastTouchedAtTime
Zeit zu der der Ball zuletzt berührt wurde
int theLastTouchedBy
Id des Teams, das den Ball als letztes beruehrt hat
static double theMaxMoment
static double theMaxPower
static double theMinMoment
static double theMinPower

Private Methods

double kickPowerMult( double angleFromPlayerToBall, double distFromPlayerToBall )
Formel mit der die Kickstaerke modifiziert wird

Inherited from ModelledObject:

Private Fields

Reliability thePosReliability
Reliability theSpeedReliability

Inherited from MovingObject:

Private Fields

Vector theSpeed

Inherited from StableObject:

Private Fields

int theId
Vector thePos

Inherited from StorableObject:

Public

Ausgabe auf dem Terminal

void printOn(ostream& = cout)
Ausgabe der Beschreibung auf einen Stream
virtual String toString()
Beschreibung als String fuer die Ausgabe auf einem Terminal

Objekte anlegen und zerstören

virtual StorableObject* copy()
Legt eine Kopie des Objekts auf dem Heap an und liefert einen Zeiger darauf zurück
virtual ~StorableObject()
Der virtuelle Destruktor

Documentation

Die interne Repraesentation des Balls im Weltmodell. Ein ModelledBall hat zusaetzlich zu den Eigenschaften eines ModelledObject das Wissen darueber, von welchem Team er als letzter beruehrt worden ist. (Bisher wird diese Eigenschaft aber noch nirgendwo gesetzt und nirgendwo abgefragt.)

Quelltext

[Header | [Implementierung]

CVS Informationen zum Interface

  **************************************************
  *
  * Aktueller Stand
  *
  *   $RCSfile: ModelledBall.h,v $
  *   $Revision: 1.40 $
  *   $Date: 1998/08/14 13:20:51 $
  *   $Author: myritz $ 
  *
  **************************************************
  
Interne Fehlerklassen.

class ModelledBallException: public ModelledObjectException
Allgemeine Fehlerklasse

class KickImpossibleException: public ModelledBallException
Fehlerklasse für illegalen Kickversuch. Sie wird ausgelöst, wenn der Ball außer Reichweite des Spielers ist.

Erzeugen und Zerstören

ModelledBall( int id = UNDEF_ID, const Vector& aPos = Vector(), const Vector& aSpeed = Vector(), const Reliability& aPosReliability = Reliability(Reliability::RANDOM), const Reliability& aSpeedReliability = Reliability(Reliability::RANDOM), int aLastTouchedBy = UNDEF_TEAM_ID, int aLastTouchedAtTime = -1)
Default-Konstruktor und neuer Ball mit Daten
Parameters:
id - Die Id des Balles.
aPos - Die Position. Als Default wird unbekannt angenommen.
aSpeed - Die Geschwindigkeit. Als Default wird unbekannt angenommen.
aPosReliability - Die Verlaesslichkeit der Position. Als Default wird RANDOM angenommen.
aPosReliability - Die Verlaesslichkeit der Geschwindikeit. Als Default wird RANDOM angenommen.
aLastTouchedBy - Das Team, von dem der Ball als letztes beruehrt worden ist. Default ist UNDEF_TEAM.
aLastTouchedAtTime - Zeit, zu der der Ball zuletzt berührt wurde. Default ist -1.

ModelledBall( const MovingObject& aMovingObject, const Reliability& aPosReliability = Reliability(Reliability::RANDOM), const Reliability& aSpeedReliability = Reliability(Reliability::RANDOM), int aLastTouchedBy = UNDEF_TEAM_ID, int aLastTouchedAtTime = -1)
Modellierung eines wahrgenommenen Balls. Dabei werden die Positions- und Geschwindigkeitsvektoren NICHT in das absolute Koordinatensystem übertragen, sondern einfach übernommen. Die Transformation ist Aufgabe des Weltmodells.
Parameters:
aMovingObject - Der gesehene Ball.
aPosReliability - Die Verlaesslichkeit der Position. Als Default wird RANDOM angenommen.
aPosReliability - Die Verlaesslichkeit der Geschwindikeit. Als Default wird RANDOM angenommen.
aLastTouchedBy - Das Team, von dem der Ball als letztes beruehrt worden ist. Default ist UNDEF_TEAM_ID.
aLastTouchedAtTime - Zeit, zu der der Ball zuletzt berührt wurde. Default ist -1.

virtual StorableObject* copy()
Legt eine Kopie des Objekts auf dem Heap an und liefert einen Zeiger darauf zurueck

Werte abfragen

int lastTouchedBy()
Liefert Team, das zuletzt den Ball beruehrt hat

int lastTouchedAtTime()
Liefert die Zeit, zu der der Ball zuletzt berührt wurde

virtual String toString()
Beschreibung als String fuer die Ausgabe auf einem Terminal. Es werden ID, Position, Geschwindigkeit, Zuverlaessigkeitswerte, LastTouchedBy und LastTouchedAtTime ausgegeben.

Werte setzen

void setLastTouchedBy( int newLastTouchedBy )
Setzt Team, das zuletzt den Ball beruehrt hat, neu

void setLastTouchedAtTime( int newLastTouchedAtTime )
Setzt die Zeit, zu der der Ball zuletzt berührt wurde

Simulation

void simulateSteps( unsigned int simSteps = 1 )
Fuehrt Simulationsschritte aus. Dabei wird die Geschwindigkeit auf die Position addiert und die Geschwindigkeit mit dem Verlangsamungsfaktor multipliziert. Die Verlaesslichkeit wird herabgesetzt.

void accelerate( double power, double angle, const ModelledPlayer& byPlayer )
Beschleunigt. Wie stark sich die Kraft auf die Beschleunigung auswirkt, haengt vom Kraftfaktor (powerRate), von einem Objektbeschleunigungsfaktor (maxPowerRate) und von der Position des kickenden Spielers (byPlayer) ab.

Durch Aufruf von accelerate werden nur Werte gesetzt. Um die Aktion tatsächlich zu simulieren, muß anschließend simulateSteps aufgerufen werden.

Throws:
ModelledBallException bei undefierter Ballgeschwindigkeit
Parameters:
power - Die Kraft, mit der beschleunigt wird.
angle - Die Richtung, relativ zur Blickrichtung des Spielers byPlayer, in die beschleunigt werden soll.
byPlayer - Der Spieler der die Beschleunigung ausfuehrt.

Hilfsfunktionen zur Kick-Berechnung

bool isInKickRangeOfPlayer( const ModelledPlayer& aPlayer )
Ueberprueft, ob der Ball im Kick-Bereich ist
Returns:
YES, wenn ja, sonst nein

double effectiveKickPower( double power, const ModelledPlayer& kickingPlayer )
Es wird die tatsaechlich verfuegbare Kraft (effectiveKickPower) ausgerechnet
Throws:
KickImpossibleException falls Ball nicht im Kick-Bereich (zu weit weg)
Returns:
effectiveKickPower Die Kraft, mit der der Ball tatsaechlich beschleunigt wird.
Parameters:
power - Die Kraft, mit der man den Ball kicken will.
kickingPlayer - Der Spieler der die Beschleunigung ausfuehrt.

double kickPowerForSend( double power, const ModelledPlayer& kickingPlayer )
Es wird die Kraft bestimmt, die dem SoccerServer geschickt werden muss, damit effektiv der Ball mit der Kraft power beschleunigt wird. Diese Funktion ist also genau die Umkehrfunktion von effectiveKickPower. Es gilt also: kickPowerForSend(effectiveKickPower( power )) == power, wenn power normalisiert ist (im definierten Bereich liegt). Liegt das zu sendene Kommando nicht im definierten Bereich, wird normalisiert und eine Warnung ins Log geschrieben.
Throws:
KickImpossibleException falls Ball nicht im Kick-Bereich (zu weit weg)
Returns:
powerForSend Die Kraft mit dem man den Ball kicken muss.
Parameters:
power - Die Kraft mit der Ball beschleunigt werden soll.
kickingPlayer - Der Spieler der die Beschleunigung ausfuehrt.

double maxEffectiveKickPower(const ModelledPlayer& kickingPlayer)
Liefert den maximalen sinnvollen effektiven Kick durch den der angegebene Spieler den Ball zur derzeitigen Situation beschleunigen kann

double normalizeKickPower(double power)
Normalisiert die Kraft fuer einen kick
Throws:
ModelledBallException falls der uebergebene Wert UNDEF_DOUBLE ist

double normalizeKickAngle(double angle)
Normalisiert den Winkel fuer einen kick

Konfigurierbare Werte erfragen

double size()
Klassenvariablen BallSize abfragen

double decay()
Klassenvariablen BallDecay abfragen

double maxSpeed()
Klassenvariablen BallMaxSpeed abfragen

double kickPowerRate()
Klassenvariablen KickPowerRate abfragen

double maxPower()
Klassenvariablen MaxPower abfragen

double minPower()
Klassenvariablen MinPower abfragen

double maxMoment()
Klassenvariablen MaxMoment abfragen

double minMoment()
Klassenvariablen MinMoment abfragen

double kickMargin()
Klassenvariablen KickMargin abfragen

void setSize(double aBallSize)
Klassenvariablen BallSize setzen

void setDecay(double aBallDecay)
Klassenvariablen BallDecay setzen

void setMaxSpeed(double aBallMaxSpeed)
Klassenvariablen BallMaxSpeed setzen

void setKickPowerRate(double aKickPowerRate)
Klassenvariablen KickPowerRate setzen

void setMaxPower(double aMaxPower)
Klassenvariablen MaxPower setzen

void setMinPower(double aMinPower)
Klassenvariablen MinPower setzen

void setMaxMoment(double aMaxMoment)
Klassenvariablen MaxMoment setzen

void setMinMoment(double aMinMoment)
Klassenvariablen MinMoment setzen

void setKickMargin(double aKickMargin)
Klassenvariablen KickMargin setzen

Konfigurierbare Werte setzen

void setClassVars()
liest die Werte aller Klassenvariablen aus dem Konfigurationsfile ein

static double theBallSize

static double theBallDecay

static double theBallMaxSpeed

static double theKickPowerRate

static double theMaxPower

static double theMinPower

static double theMaxMoment

static double theMinMoment

static double theKickMargin

static short isSetOnce

double kickPowerMult( double angleFromPlayerToBall, double distFromPlayerToBall )
Formel mit der die Kickstaerke modifiziert wird

int theLastTouchedBy
Id des Teams, das den Ball als letztes beruehrt hat

int theLastTouchedAtTime
Zeit zu der der Ball zuletzt berührt wurde


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++