class Vector : public StorableObject

Diese Klasse beschreibt einen 2D-Vektor

Inheritance:


Public Classes

DEGREE class VectorException: public Exception
Interne Fehlerklasse

Public Methods

double angle( AngleSystemEnum anAngleSystem = RADIAN )
Gibt den Winkel zurueck
virtual StorableObject* copy()
Legt eine Kopie des Objekts auf dem Heap an und liefert einen Zeiger darauf zurueck
bool isValid()
Prueft, ob der Vektor komplett definiert ist
double length()
Gibt die Laenge zurueck
void normalize()
Setzt die Laenge auf 1
bool operator != ( const Vector v2 )
Vergleich des Vectors v2 mit dem aktuellen Vektor auf Ungleichheit
friend Vector operator * (double aScalarValue, const Vector& aVector)
die skalare Multiplikation von links
Vector operator + (const Vector& v2)
Vektoraddition
const Vector& operator += (const Vector& v2)
Addition des Vektor v2 zum aktuellen Wert
Vector operator - (const Vector& v2)
Vektorsubtraktion
const Vector& operator -= (const Vector& v2)
Subtraktion des Vektors v2 vom aktuellen Wert
bool operator == ( const Vector v2 )
Vergleich des Vectors v2 mit dem aktuellen Vektor
void set( double value1, double value2, CoordinateSystemEnum aCoordinateSystem = CARTESIAN, AngleSystemEnum anAngleSystem = RADIAN )
Setzt Werte neu
void setCartesian(const double anXValue, const double anYValue)
Setzt die x- und die y-Koordinate
void setPolar( double aLength, double anAngle, AngleSystemEnum anAngleSystem = RADIAN )
Setzt die Laenge und den Winkel des Vektors
virtual String toString()
Beschreibung als String fuer die Ausgabe auf einem Terminal
Vector()
Neuer undefinierter Vektor
Vector( double value1, double value2, CoordinateSystemEnum aCoordinateSystem = CARTESIAN, AngleSystemEnum anAngleSystem = RADIAN )
Neuer Vektor
bool wasInitializedWithNegativeDist()
Gibt zurück ob der Vektor mit einer negativen Distanz initialisiert wurde
double x()
Gibt die x-Koordinate zurueck
double y()
Gibt die y-Koordinate zurueck

Private Fields

bool theWasInitializedWithNegativeDist
Ob die Dist mit einen negativen Wert initialisiert wurde
double theX
Die x-Komponente
double theY
Die y-Komponente

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

Diese Klasse beschreibt einen 2D-Vektor. Der Vektor akzeptiert Lesen und Schreiben seiner Werte sowohl in Polarkoordinaten als auch in kartesischen Koordinaten.

Per Konvention werden die Werte so interpretiert:

Kartesisches Koordinatensystem:
x-Achse nach rechts, y-Achse nach oben. Bei Angabe als Paar: (x, y)

Polarkoordinatensystem
Winkel gegen den Uhrzeigersinn im Bogenmass [-Pi,Pi]. Bei Laenge 0 ist auch Winkel 0. Bei Angabe als Paar: (Laenge, Winkel) \end{description

Intern werden momentan nur die kartesischen Koordinaten gefuehrt, die Polarkoordinaten jeweils dynamisch ausgerechnet.

Die Klasse prueft vor Berechnungen <b>nicht</b>, ob die Komponenten gleich UNDEF_DOUBLE sind. Werden zwei undefinierte Vektoren z.B. addiert, so ist das Ergebnis nicht unbedingt ein undefinierter Vektor (d.h. er antwortet auf isValid() nicht unbedingt mit NO).

Quelltext

[Header | [Implementierung]

CVS Informationen zum Interface

  **************************************************
  *
  * Aktueller Stand
  *
  *   $RCSfile: Vector.h,v $
  *   $Revision: 1.27 $
  *   $Date: 1998/08/14 13:21:29 $
  *   $Author: myritz $ 
  *
  **************************************************
  
DEGREE class VectorException: public Exception
Interne Fehlerklasse

Vector( double value1, double value2, CoordinateSystemEnum aCoordinateSystem = CARTESIAN, AngleSystemEnum anAngleSystem = RADIAN )
Neuer Vektor
Throws:
VectorException falls: unbekanntes Koordinatensystem, unbekannte Winkelart.
Parameters:
value1 - Die x-Koordinate bei kartesischen, die Laenge bei Polarkoordinaten.
value2 - Die y-Koordinate bei kartesischen, der Winkel im Bogenmass bei Polarkoordinaten.
aCoordinateSystem. - Das Koordinatensystem, in dem die beiden vorigen Werte zu interpretieren sind. CARTESIAN ist default.
anAngleSystem. - Das Winkelmesssystem, in dem der Winkel bei einer Polarkoordinatenangabe angegeben ist. RADIAN ist default.
ist - einer der Werte undefiniert wird der Vektor auf (UNDEF_DOUBLE,UNDEF_DOUBLE) gesetzt

Vector()
Neuer undefinierter Vektor

double x()
Gibt die x-Koordinate zurueck

double y()
Gibt die y-Koordinate zurueck

void setCartesian(const double anXValue, const double anYValue)
Setzt die x- und die y-Koordinate

double length()
Gibt die Laenge zurueck.(falls der Vektor ungueltig ist UNDEF_DOUBLE)

double angle( AngleSystemEnum anAngleSystem = RADIAN )
Gibt den Winkel zurueck.(falls der Vektor ungueltig ist UNDEF_DOUBLE)
Throws:
VectorException falls: unbekannte Winkelart.

void setPolar( double aLength, double anAngle, AngleSystemEnum anAngleSystem = RADIAN )
Setzt die Laenge und den Winkel des Vektors. Falls Laenge oder Winkel undefiniert ist, wird der Vektor auf (UNDEF_DOUBLE,UNDEF_DOUBLE) gesetzt
Throws:
VectorException falls: unbekannte Winkelart.

void set( double value1, double value2, CoordinateSystemEnum aCoordinateSystem = CARTESIAN, AngleSystemEnum anAngleSystem = RADIAN )
Setzt Werte neu
Throws:
VectorException falls: unbekanntes Koordinatensystem, unbekannte Winkelart.
Parameters:
value1 - Die x-Koordinate bei kartesischen, die Laenge bei Polarkoordinaten.
value2 - Die y-Koordinate bei kartesischen, der Winkel bei Polarkoordinaten.
aCoordinateSystem - Das Koordinatensystem, in dem die beiden vorigen Werte zu interpretieren sind. CARTESIAN ist default.
anAngleSystem. - Das Winkelmesssystem, in dem der Winkel bei einer Polarkoordinatenangabe angegeben ist. RADIAN ist default.

bool isValid()
Prueft, ob der Vektor komplett definiert ist..
Returns:
YES falls beide Werte(x,y bzw. Laenge,Winkel) definiert sind, sonst NO

bool wasInitializedWithNegativeDist()
Gibt zurück ob der Vektor mit einer negativen Distanz initialisiert wurde. Diese Methode wird für die dist- und dir-Change Parameter gebraucht, da sonst Information verloren geht.

void normalize()
Setzt die Laenge auf 1. Der Winkel bleibt gleich

Vector operator + (const Vector& v2)
Vektoraddition.

Vector operator - (const Vector& v2)
Vektorsubtraktion

friend Vector operator * (double aScalarValue, const Vector& aVector)
die skalare Multiplikation von links

const Vector& operator += (const Vector& v2)
Addition des Vektor v2 zum aktuellen Wert

const Vector& operator -= (const Vector& v2)
Subtraktion des Vektors v2 vom aktuellen Wert

bool operator == ( const Vector v2 )
Vergleich des Vectors v2 mit dem aktuellen Vektor. Es wird isAlmostEqual verwendet.
Returns:
YES, wenn die beiden Vektoren praktisch identisch sind, sonst NO

bool operator != ( const Vector v2 )
Vergleich des Vectors v2 mit dem aktuellen Vektor auf Ungleichheit. Es wird isAlmostEqual verwendet.
Returns:
NO, wenn die beiden Vektoren praktisch identisch sind, sonst YES

virtual String toString()
Beschreibung als String fuer die Ausgabe auf einem Terminal. Es werden kartesische UND Polarkoordinate ausgegeben. Die Ausgabe der Polarkoordinaten erfolgt in Grad. Ausserdem wird auf ungueltige Vektoren hingewiesen.

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

double theX
Die x-Komponente

double theY
Die y-Komponente

bool theWasInitializedWithNegativeDist
Ob die Dist mit einen negativen Wert initialisiert 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++