mapper.DataStrukture
Class MovementField

java.lang.Object
  extended by mapper.DataStrukture.MovementField

public class MovementField
extends java.lang.Object

Die Klasse MovementField beinhaltet in erster Line die Knoten des Polygons, in denen sich später die Nodes für das NS2-System bewegen können. Hierbei werden die Knoten doppelt verwaltet, einmal als double und einmal als Polygon. Diese Verfahrensweise wird verwendet, da die double Werte bessere und genauere Ergebnisse, gerade beim Skalieren des Zooms, ergeben. Währende die Polygone nur für die Darstellung des Polygons selbst gelten. Die "workbench" (PaintingArea) rechnet nur mit Integerwerten Gerade die Berechnung, ob sich ein gegebener Knoten in einem Poligon befindet wird so teilweise minimiert, da die Polygonpunkte erste von der ArrayList ins Poligon überführt werden müssten. Eine andere wesentliche Variable ist _movementFieldNameNumber, da das MovementField keinen speziellen Namen, sondern nur eine Nummerierung erhält.

Author:
Emanuel Eden

Field Summary
private  boolean _isStatic
           
private  int _movementFieldNameNumber
           
private  java.util.ArrayList _polygonNodes
           
private  TimeScheduler _timeScheduler
           
(package private) static double MAXVALUE
           
(package private) static double MINVALUE
           
 
Constructor Summary
MovementField(java.util.ArrayList polygon, double simulationTime)
          Konstruktor erhählt ein Polygon in Form einer ArrayList.
MovementField(double simulationTime)
          Objekt wird mit der Simulationszeit initialisiert.
MovementField(MovementField movementField)
          Dieses MovementField mit einem fremden MovementField initilalisieren und der Simulationszeit.
 
Method Summary
 int getName()
          Liefert den Namen des MovementFields zurück.
 java.util.ArrayList getNodes()
          Liefert eine ArrayList allen Knoten zurück, die das MovementField benennen.
 java.awt.Polygon getPolygon()
          Liefert das das MovementField als Polygon zurück.
 Position getPosition()
          Diese Methode liefert den Duchschnittswert aller MovementField Polygone, die in _polygonNodes abgespeichert sind.
 boolean getStaticStatus()
          Gibt zurück, ob das Movementfield statisch oder nicht statisch ist.
 TimeScheduler getTimeScheduler()
          Liefert den TimeScheduler des MovementFields
 TimeSlot getTimeSlot()
          Liefert ein neues TimeSlot Element für den TimeScheduler.
 Position getTimeSlotPosition()
          Liefert die Position des letzten TimeSlots im TimeScheduler zurück.
 boolean isPointInMovementField(Position node)
          Gibt aus, ob sich der Angegebene Knoten vom Objekt Position innerhalb true oder auserhalb false des Polygons befindet.
 void setName(int nameNumber)
          Setzt den Namen des _movementFields fest.
 void setNode(Position node)
          Ergänzt das MovementField um einen Knoten.
 void setNodes(java.util.ArrayList polygon)
          Konvertiert eine Liste von Knoten in einer Array list zu einem Polygon Objekt.
 void setStaticStatus(boolean isStatic)
          Deklariert das MovementField als Statisch.
 void setTimeScheduler(TimeScheduler timeScheduler)
          Setzt einen neuen TimeScheduler in das MovementField ein.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAXVALUE

static final double MAXVALUE
See Also:
Constant Field Values

MINVALUE

static final double MINVALUE
See Also:
Constant Field Values

_polygonNodes

private java.util.ArrayList _polygonNodes

_timeScheduler

private TimeScheduler _timeScheduler

_movementFieldNameNumber

private int _movementFieldNameNumber

_isStatic

private boolean _isStatic
Constructor Detail

MovementField

public MovementField(double simulationTime)
Objekt wird mit der Simulationszeit initialisiert. Diese Zeit benötigt der TimeScheduler um festzustellen, ob die Simulationszeit überschritten wird


MovementField

public MovementField(MovementField movementField)
Dieses MovementField mit einem fremden MovementField initilalisieren und der Simulationszeit.

Parameters:
movementField - bestehendes MovementField

MovementField

public MovementField(java.util.ArrayList polygon,
                     double simulationTime)
Konstruktor erhählt ein Polygon in Form einer ArrayList. Die ArrayList gilt als Grundlage für die Berechnungen des MovementFields. Dazu die Simulationszeit.

Parameters:
polygon - ArrayList mit Nodes oder Punkten, der Form Position
Method Detail

setName

public void setName(int nameNumber)
Setzt den Namen des _movementFields fest. Hierbei ist der Name zum Erkennen des MovementFields nur ein Integerwert, der bei jedem neuen MovementField incementiert wird.

Parameters:
nameNumber - ist ein Integerwert, den das MovementField erhält

getName

public int getName()
Liefert den Namen des MovementFields zurück.

Returns:
int Name des MovementFields.

setNodes

public void setNodes(java.util.ArrayList polygon)
Konvertiert eine Liste von Knoten in einer Array list zu einem Polygon Objekt.

Parameters:
polygon -

setNode

public void setNode(Position node)
Ergänzt das MovementField um einen Knoten.

Parameters:
node - Von der Form Position

getNodes

public java.util.ArrayList getNodes()
Liefert eine ArrayList allen Knoten zurück, die das MovementField benennen.

Returns:
ArrayList von Knoten als Position Objekt.

getPosition

public Position getPosition()
Diese Methode liefert den Duchschnittswert aller MovementField Polygone, die in _polygonNodes abgespeichert sind. Die Methode wird benötigt, damit beim Erstellen des Pfades, nur eine einzige Positionsangabe für die Berechnung der Bewegung existiert.

Returns:
Position Mittelwert aller Polygonepositionen

setStaticStatus

public void setStaticStatus(boolean isStatic)
Deklariert das MovementField als Statisch. Sofern isStatic gleich true ist, zählt dieses MovementField nicht zu den beweglichen Objekten. Andernfalls kann der kompletten Map ein Vektor zugewiesen werden, der alle MovementFields, die mit isStatic gleich false sind, in diese Richtung bewegen werden können.

Parameters:
isStatic - Boolean ob true oder false

getStaticStatus

public boolean getStaticStatus()
Gibt zurück, ob das Movementfield statisch oder nicht statisch ist. Für eine genauere Beschreibung, was statisch bedeutet, siehe die Beschreibung von setStaticStatus

Returns:
Liefert boolean Wert true oder False zurück, wenn das MovementField statisch ist.

isPointInMovementField

public boolean isPointInMovementField(Position node)
Gibt aus, ob sich der Angegebene Knoten vom Objekt Position innerhalb true oder auserhalb false des Polygons befindet.

Parameters:
node - vom Objekt Position
Returns:
boolean Wert.

getPolygon

public java.awt.Polygon getPolygon()
Liefert das das MovementField als Polygon zurück. Durch das Polygon kann sehr leicht berechnet werden, ob sich ein Punkt im Polygon befindet.

Returns:
Polygon liefert das MovementField als Polygon Objekt zurück

setTimeScheduler

public void setTimeScheduler(TimeScheduler timeScheduler)
Setzt einen neuen TimeScheduler in das MovementField ein. Dies ist nötig, da alle MovementFields nur die selbe Bwegenung machen dürfen. Nachdem die Bewegung des ersten MovementFields gesetzt wurde, werden alle weiter deklarierten MovementFields mit dem ersten TimeScheduler versehen.

Parameters:
timeScheduler - erhält einen bestehenden TimeScheduler

getTimeScheduler

public TimeScheduler getTimeScheduler()
Liefert den TimeScheduler des MovementFields

Returns:
TimeScheduler liefert den momentanen TimeScheduler

getTimeSlot

public TimeSlot getTimeSlot()
Liefert ein neues TimeSlot Element für den TimeScheduler. Sofern noch kein einziger TimeSlot im TimeScheduler besteht, wird nur die Position des MovementFields über- geben. Wenn sich jedoch bereits ein TimeSlot im TimeScheduler befindet. Wird die StopPosition des letzte TimeSlots als Anfangspunkt definiert und erhählt zudem die zu letzt gültige StopTime als StartTime.

Returns:
TimeSlot Liefert den letzten TimeSlot zurück.

getTimeSlotPosition

public Position getTimeSlotPosition()
Liefert die Position des letzten TimeSlots im TimeScheduler zurück. Sofern sich noch kein TimeSlot im TimeScheduler befindet wird die Position des MovementField zurück- geliefert.

Returns:
Position des letzten gültigen TimeSlots oder der MovementField Position