TheWayOut 2008

de.thewayout.o8.api
Class Position

java.lang.Object
  extended by de.thewayout.o8.api.BaseObject
      extended by de.thewayout.o8.api.Position
All Implemented Interfaces:
IHashable, java.lang.Cloneable

public class Position
extends BaseObject
implements java.lang.Cloneable, IHashable

Repräsentiert die Position auf dem Planeten durch Breitengrad und Längengrad.

Author:
ObjectFab GmbH

Field Summary
static Position EQUATOR_ZERO
           
static double GRANTED_ACCURACY
           
static int GRANTED_ACCURACY_PLACES
           
static Position NORTH_POLE
           
static Position SOUTH_POLE
           
 
Method Summary
 void advance(Course course, double distance)
          Verschiebt die Position entsprechend der Richtung und der Entfernung.
 void advance(Route route)
          Verschiebt die Position entsprechend der Route.
 Position calculateAdvancedPosition(Course course, double distance)
          Berechnet die Position, die durch eine Verschiebung von der Position in die gegebene Richung und um die gegebenen Entfernung entsteht.
 Course calculateCourseTo(Position to)
          Berechnet die Richtung von dieser Postition zu einer anderen Position.
 double calculateDistanceTo(Position to)
          Berechnet die kürzeste orthodrome Entfernung zwischen einer Position und dieser Position.
 double calculateDistanceToRadial(Position position, Course orientation)
          Berechnet die Entfernung dieser Position zu einem Grosskreis.
static Position[] calculateIntersectionOfRadials(Position positionOnRadial1, Course courseOfRadial1, Position positionOnRadial2, Course courseOfRadial2)
          Deprecated. Diese Methode ist veraltet und darf nicht mehr genutzt werden.
 Position clone()
           
 Position copy()
          Wie clone, aber eventuelle Exceptions werden sofort ausgegeben.
static Position create()
           
static Position create(double latitude, double longitude)
          Erzeugt ein neue Position.
static Position create(double latitude, double longitude, java.lang.String name)
          Erzeugt ein neue Position mit Bezeichnung.
 boolean equals(java.lang.Object o)
          Überprüft ob eine Position geografisch so dicht an dieser liegt, dass diese als gleich betrachtet werden können.
 double getLatitude()
          Gibt den Breitengrad als Radian zurück.
 double getLatitudeDeg()
          Gibt den Breitengrad in Grad zurück.
 double getLongitude()
          Gibt den Längengrad als Radiant zurück.
 double getLongitudeDeg()
          Gibt den Längengrad in Grad zurück.
 java.lang.String getName()
          Gibt den Namen der Position zurück.
 int hashCode()
          Gibt den Hashwert des Objektes zurück.
 boolean liesInCircle(Position centre, double radius)
          Überprüft ob diese Position in einem Kreis um eine gegebene Position liegt.
 void setCoordinates(double latitude, double longitude)
          Setzt die Koordinaten der Position als Radiant Werten.
 void setCoordinatesDeg(double latitude, double longitude)
          Setzt die Koordinaten der Position als Grad Werten.
 void setLatitude(double latitude)
          Setzt den Breitengrad.
 void setLatitudeDeg(double latitude)
          Setzt den Breitengrad.
 void setLongitude(double longitude)
          Setzt den Längengrad.
 void setLongitudeDeg(double longitude)
          Setzt den Längengrad.
 void setName(java.lang.String name)
          Setzt den Namen der Position.
 java.lang.String toString()
          Gibt eine textuelle Repäsentation der Position zurück.
 
Methods inherited from class de.thewayout.o8.api.BaseObject
areNotNull, createList, isEmpty, isEmpty, isEmpty, isEmpty, isNotEmpty, isNotEmpty, isNotEmpty, isNotEmpty, isNotNull, isNull
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

GRANTED_ACCURACY_PLACES

public static final int GRANTED_ACCURACY_PLACES
See Also:
Constant Field Values

GRANTED_ACCURACY

public static final double GRANTED_ACCURACY

NORTH_POLE

public static final Position NORTH_POLE

SOUTH_POLE

public static final Position SOUTH_POLE

EQUATOR_ZERO

public static final Position EQUATOR_ZERO
Method Detail

create

public static Position create()

create

public static Position create(double latitude,
                              double longitude)
Erzeugt ein neue Position.

Parameters:
latitude - Breitengrad in radian format (PI/2.0 heisst 90 Nord)
longitude - Längengrad in radian format (-PI heisst 180 West, PI heisst 180 Ost)
Returns:
die Postition

create

public static Position create(double latitude,
                              double longitude,
                              java.lang.String name)
Erzeugt ein neue Position mit Bezeichnung.

Parameters:
latitude - Breitengrad in radian format (PI/2.0 heisst 90 Nord)
longitude - Längengrad in radian format (-PI heisst 180 West, PI heisst 180 Ost)
name - Name der Position (z.B. Nordpol, Los Angeles, Dresden)
Returns:
die Postition

getLongitude

public double getLongitude()
Gibt den Längengrad als Radiant zurück.

Returns:
der Längengrad

setLongitude

public void setLongitude(double longitude)
Setzt den Längengrad. Der Wert wird automatisch in den richtigen Wertebereich [-PI; PI] verschoben.

Parameters:
longitude - Längengrad als Radiant

getLatitude

public double getLatitude()
Gibt den Breitengrad als Radian zurück.

Returns:
der Breitengrad im Bereich [-PI/2; PI/2]

setLatitude

public void setLatitude(double latitude)
Setzt den Breitengrad. Sollte der Breitengrad ausserhalb des Wertebereiches [-PI/2; PI/2] sein, wird der Wert Double.NaN verwendet.

Parameters:
latitude - Breitengrad als Radiant

getLongitudeDeg

public double getLongitudeDeg()
Gibt den Längengrad in Grad zurück.

Returns:
der Längengrad

getLatitudeDeg

public double getLatitudeDeg()
Gibt den Breitengrad in Grad zurück.

Returns:
der Breitengrad

setLongitudeDeg

public void setLongitudeDeg(double longitude)
Setzt den Längengrad. Der Wert wird automatisch in den richtigen Wertebereich [-180; 180] verschoben.

Parameters:
longitude - Längengrad in Grad

setLatitudeDeg

public void setLatitudeDeg(double latitude)
Setzt den Breitengrad. Sollte der Breitengrad ausserhalb des Wertebereiches [-90; 90] sein, wird der Wert Double.NaN verwendet.

45.52 bedeutet 45DEG 30' 12'' Nord, -90 heisst 90 Süd

Parameters:
latitude - Breitengrad in Grad

setCoordinates

public void setCoordinates(double latitude,
                           double longitude)
Setzt die Koordinaten der Position als Radiant Werten.

Parameters:
latitude - Breitengrad der Position als Radiant Wert
longitude - Längengrad der Position als Radiant Wert

setCoordinatesDeg

public void setCoordinatesDeg(double latitude,
                              double longitude)
Setzt die Koordinaten der Position als Grad Werten.

Parameters:
latitude - Breitengrad der Position in Grad
longitude - Längengrad der Position in Grad

getName

public java.lang.String getName()
Gibt den Namen der Position zurück. Es wird ein leerer String zurückgegeben, wenn keine Bezeichung vorhanden ist.

Returns:
Name der Position

setName

public void setName(java.lang.String name)
Setzt den Namen der Position.

Parameters:
name - der Name (z.B. Dresden)

toString

public java.lang.String toString()
Gibt eine textuelle Repäsentation der Position zurück.

[Name:] (Breitengrad, Längengrad)

Overrides:
toString in class java.lang.Object
Returns:
ein String

advance

public void advance(Route route)
Verschiebt die Position entsprechend der Route. Bei null bleibt die Position erhalten.

Parameters:
route - die Route um die die Position verschoben werden soll

advance

public void advance(Course course,
                    double distance)
Verschiebt die Position entsprechend der Richtung und der Entfernung. Bei invaliden Parametern findet keine Verschiebung statt. Eine Entfernung von Pi bedeutet eine Verschiebung um den halben Planeten.

Achtung es können Rundungsfehler auftreten.

Parameters:
course - die Richtung in die verschoben werden soll
distance - die Entfernung in Radiant Werten um die verschoben werden soll

calculateIntersectionOfRadials

@Deprecated
public static Position[] calculateIntersectionOfRadials(Position positionOnRadial1,
                                                                   Course courseOfRadial1,
                                                                   Position positionOnRadial2,
                                                                   Course courseOfRadial2)
Deprecated. Diese Methode ist veraltet und darf nicht mehr genutzt werden.

Parameters:
positionOnRadial1 -
courseOfRadial1 -
positionOnRadial2 -
courseOfRadial2 -
Returns:
nichts, weil eine RuntimeException geworfen wird

calculateAdvancedPosition

public Position calculateAdvancedPosition(Course course,
                                          double distance)
Berechnet die Position, die durch eine Verschiebung von der Position in die gegebene Richung und um die gegebenen Entfernung entsteht. Eine Entfernung von Pi bedeutet eine Verschiebung um den halben Planeten.

Achtung es können Rundungsfehler auftreten.

Parameters:
course - die Richtung in die verschoben werden soll
distance - die Entfernung in Radiant Werten um die verschoben werden soll
Returns:
die verschobene Position oder null wenn ein Parameter invalid ist

liesInCircle

public boolean liesInCircle(Position centre,
                            double radius)
Überprüft ob diese Position in einem Kreis um eine gegebene Position liegt.

Parameters:
centre - das Zentrum des Kreises
radius - der Radius des Kreises
Returns:
true wenn die Position im Kreis liegt, false sonst

equals

public boolean equals(java.lang.Object o)
Überprüft ob eine Position geografisch so dicht an dieser liegt, dass diese als gleich betrachtet werden können. Die Toleranz wird bestimmt durch die Konstante GRANTED_ACCURACY_PLACES.

Specified by:
equals in interface IHashable
Overrides:
equals in class java.lang.Object
Parameters:
o - die Postition mit der verglichen werden soll
Returns:
ob das Objekt diesem gleicht
See Also:
GRANTED_ACCURACY_PLACES

hashCode

public int hashCode()
Gibt den Hashwert des Objektes zurück. Sollte das Objekt als Key in einer Map verwendet werden, so sollte es nicht mehr geaendert werden, da Änderungen am Objekt auch den Hashwert ändern.

Specified by:
hashCode in interface IHashable
Overrides:
hashCode in class java.lang.Object
Returns:
Hashwert des Objektes
See Also:
Object.hashCode()

calculateDistanceTo

public double calculateDistanceTo(Position to)
Berechnet die kürzeste orthodrome Entfernung zwischen einer Position und dieser Position.

Achtung es können Rundungsfehler auftreten.

Parameters:
to - eine Position
Returns:
die Entfernung oder INVALID_DISTANCE bei invaliden Parametern
See Also:
Coordinates.DISTANCE_INVALID

calculateCourseTo

public Course calculateCourseTo(Position to)
Berechnet die Richtung von dieser Postition zu einer anderen Position.

Parameters:
to - eine Position
Returns:
die Richtung oder null wenn der Parameter invalid ist

copy

public Position copy()
Wie clone, aber eventuelle Exceptions werden sofort ausgegeben.

Returns:
Kopie der Position

clone

public Position clone()
               throws java.lang.CloneNotSupportedException
Overrides:
clone in class java.lang.Object
Throws:
java.lang.CloneNotSupportedException

calculateDistanceToRadial

public double calculateDistanceToRadial(Position position,
                                        Course orientation)
Berechnet die Entfernung dieser Position zu einem Grosskreis.

Parameters:
position - eine Position auf dem Grosskreis
orientation - die Ausrichtung des Grosskreises
Returns:
die berechnete Entfernung oder -1 bei invaliden Parametern

© ObjectFab GmbH 2008