gishur.x
Class PointComparitor

java.lang.Object
  |
  +--gishur.core.StdComparitor
        |
        +--gishur.x.PointComparitor
All Implemented Interfaces:
Comparitor, java.io.Serializable

public class PointComparitor
extends StdComparitor

Vergleicher für Punkte des Typs XPoint. PointComparitor kann Punkte bzgl. ihrer X-Koordinaten, ihrer Y-Koordinaten oder einer angularen Ordnung vergleichen. Mit setOrder wird eine Ordnung festgelegt, mittels order() bekommt man die aktuelle Ordnung (der Standard ist X_ORDER). setAngularPoints legt die Punkte für eine angulare Sortierung fest. Ohne solche Punkte kann mit setOrder(ANGULAR) keine angulare Ordnung gesetzt werden.

Ein Beispiel:
Die Liste L enthalte Punkte, die nach Winkeln um (0,0) mit der X-Achse sortiert werden sollen.

  PointComparitor PC=new PointComparitor();
  PC.setAnglePoint(new XPoint(0,0));
  PC.setOrder(PointComparitor.ANGULAR);
  L.sort(PC,Sorter.ASCENDING);
 

See Also:
Comparitor, Serialized Form

Field Summary
static byte ANGULAR
          Angulare Ordnung bzüglich eines oder zweier weiterer Punkte, die man mittels setAnglePoints setzen kann.
static byte DISTANCE_ORDER
          Die Punkte werden bezüglich des Abstandes zu einem Bezugspunkt geordnet.
static byte X_ORDER
          Ordnung nach X-Koordinaten.
static byte Y_ORDER
          Ordnung nach Y-Koordinaten.
 
Fields inherited from interface gishur.core.Comparitor
BIGGER, EQUAL, SMALLER
 
Constructor Summary
PointComparitor()
          Leerer Konstruktor.
PointComparitor(byte order)
          Konstruktor, der gleich die Ordnung order einstellt.
PointComparitor(byte order, XPoint p)
          Konstruktor, der gleich die Ordnung order einstellt und falls order==ANGULAR bzw ==DISTANCE_ORDER die entsprechenden Bezugspunkte einstellt.
 
Method Summary
 short compare(java.lang.Object o1, java.lang.Object o2)
          Überschreibt Comparitor.compare().
 short compare(XPoint p1, XPoint p2)
          Vergleicht zwei Punkte (XPoint-Objekte) miteinander.
 short compareAngle(XPoint p1, XPoint p2)
          Vergleicht zwei Punkte bezüglich ANGULAR.
 short compareDistance(XPoint p1, XPoint p2)
          Vergleicht zwei Punkte bezüglich DISTANCE_ORDER.
static short compareX(XPoint p1, XPoint p2)
          Vergleicht zwei Punkte bezüglich X_ORDER.
static short compareY(XPoint p1, XPoint p2)
          Vergleicht zwei Punkte bezüglich Y_ORDER.
 byte order()
          Liefert die gesetzte Ordnung zurück.
 boolean setAnglePoint(XPoint p)
          Setzt einen Bezugspunkt für angulare Ordnung.
 boolean setAnglePoints(XPoint p1, XPoint p2)
          Setzt zwei Bezugspunkte für Angulare Ordnung.
 void setOrder(byte order)
          Setzt die Ordnung.
 void setReferencePoint(XPoint p)
          Setzt den Referenzpunkt für Distanz-Ordnung, falls p!
 java.lang.String toString()
          Überschreibt Object.toString().
 
Methods inherited from class gishur.core.StdComparitor
compare, compare, compare, compare, compareHash
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

X_ORDER

public static final byte X_ORDER
Ordnung nach X-Koordinaten. Ein Punkt p1 liegt vor einem Punkt p2, falls: Ansonsten liegt p1 nach p2, außer es gilt p1.x==p2.x und p1.y==p2.y - dann ist natürlich p1 gleich p2.
See Also:
setOrder(byte)

Y_ORDER

public static final byte Y_ORDER
Ordnung nach Y-Koordinaten. Ein Punkt p1 liegt vor einem Punkt p2, falls: Ansonsten liegt p1 nach p2, außer es gilt p1.x==p2.x und p1.y==p2.y - dann ist natürlich p1 gleich p2.
See Also:
setOrder(byte)

ANGULAR

public static final byte ANGULAR
Angulare Ordnung bzüglich eines oder zweier weiterer Punkte, die man mittels setAnglePoints setzen kann. Wird nur ein Punkt angegeben, so wird der Winkel eines Punktes bzgl. des Strahls parallel zur X-Achse und beginnend in diesem Punkt angegeben, ansonsten bzgl. des Strahls beginnend im ersten Punkt in Richtung des zweiten Punktes. Ein Punkt p1 liegt vor einem Punkt p2, falls: Ansonsten liegt p1 nach p2, außer es gilt p1.x==p2.x und p1.y==p2.y - dann ist natürlich p1 gleich p2.
See Also:
setOrder(byte), setAnglePoints(gishur.x.XPoint, gishur.x.XPoint), setAnglePoint(gishur.x.XPoint)

DISTANCE_ORDER

public static final byte DISTANCE_ORDER
Die Punkte werden bezüglich des Abstandes zu einem Bezugspunkt geordnet. Der Bezugspunkt wird mit setReferencePoint gesetzt. Haben die zu vergleichenden Punkte denselben Abstand zum Bezugspunkt, wird nach X-Order verglichen.
See Also:
setOrder(byte), setReferencePoint(gishur.x.XPoint)
Constructor Detail

PointComparitor

public PointComparitor()
Leerer Konstruktor.

PointComparitor

public PointComparitor(byte order)
Konstruktor, der gleich die Ordnung order einstellt.

PointComparitor

public PointComparitor(byte order,
                       XPoint p)
Konstruktor, der gleich die Ordnung order einstellt und falls order==ANGULAR bzw ==DISTANCE_ORDER die entsprechenden Bezugspunkte einstellt.
Method Detail

toString

public java.lang.String toString()
Überschreibt Object.toString().
Overrides:
toString in class StdComparitor
See Also:
Object.toString()

order

public byte order()
Liefert die gesetzte Ordnung zurück.
Returns:
X_ORDER,Y_ORDER oder ANGULAR
See Also:
X_ORDER, Y_ORDER, ANGULAR, DISTANCE_ORDER

setOrder

public void setOrder(byte order)
Setzt die Ordnung. Wird ANGULAR gesetzt, so muß vorher mittels setAnglePoint mindestens ein Bezugspunkt gesetzt worden sein!
Parameters:
order - entweder X_ORDER,Y_ORDER oder ANGULAR (sonst passiert nichts)
See Also:
X_ORDER, Y_ORDER, ANGULAR, DISTANCE_ORDER

setAnglePoints

public boolean setAnglePoints(XPoint p1,
                              XPoint p2)
Setzt zwei Bezugspunkte für Angulare Ordnung. Die angluare Ordnung selbst wird aber noch nicht gesetzt.
Parameters:
p1 - Punkt, um den Winkel gemessen werden
p2 - Winkel werden vom Strahl beginnend in p1 mit Richtung p2 aus gemessen ist p2==null, so verläuft der Strahl parallel zur X-Achse.
Returns:
wahr, falls p1!=null
See Also:
ANGULAR

setAnglePoint

public boolean setAnglePoint(XPoint p)
Setzt einen Bezugspunkt für angulare Ordnung.
Parameters:
p - Winkel werden vom Strahl beginnend in p und parallel zur X-Achse aus gemessen.
Returns:
wahr, falls p1!=null
See Also:
ANGULAR

setReferencePoint

public void setReferencePoint(XPoint p)
Setzt den Referenzpunkt für Distanz-Ordnung, falls p!=null.
Parameters:
p - neuer Referenzpunkt

compareX

public static short compareX(XPoint p1,
                             XPoint p2)
Vergleicht zwei Punkte bezüglich X_ORDER.
Parameters:
p1 - erster Punkt
p2 - zweiter Punkt
Returns:
SMALLER, falls p1 in der Ordnung vor p2 liegt; BIGGER, falls p1 in der Ordnung nach p2 liegt; EQUAL, falls p1 und p2 gleich sind
See Also:
X_ORDER

compareY

public static short compareY(XPoint p1,
                             XPoint p2)
Vergleicht zwei Punkte bezüglich Y_ORDER.
Parameters:
p1 - erster Punkt
p2 - zweiter Punkt
Returns:
SMALLER, falls p1 in der Ordnung vor p2 liegt; BIGGER, falls p1 in der Ordnung nach p2 liegt; EQUAL, falls p1 und p2 gleich sind
See Also:
Y_ORDER

compareAngle

public short compareAngle(XPoint p1,
                          XPoint p2)
Vergleicht zwei Punkte bezüglich ANGULAR.
Parameters:
p1 - erster Punkt
p2 - zweiter Punkt
Returns:
SMALLER, falls p1 in der Ordnung vor p2 liegt; BIGGER, falls p1 in der Ordnung nach p2 liegt; EQUAL, falls p1 und p2 gleich sind
See Also:
ANGULAR

compareDistance

public short compareDistance(XPoint p1,
                             XPoint p2)
Vergleicht zwei Punkte bezüglich DISTANCE_ORDER.
Parameters:
p1 - erster Punkt
p2 - zweiter Punkt
Returns:
SMALLER, falls p1 in der Ordnung vor p2 liegt; BIGGER, falls p1 in der Ordnung nach p2 liegt; EQUAL, falls p1 und p2 gleich sind
See Also:
DISTANCE_ORDER

compare

public short compare(XPoint p1,
                     XPoint p2)
Vergleicht zwei Punkte (XPoint-Objekte) miteinander. Je nach gesetzter Ordung wird compareX, compareY oder compareAngle aufgerufen.
Parameters:
p1 - erster Punkt
p2 - zweiter Punkt
Returns:
SMALLER, falls p1 in der Ordnung vor p2 liegt; BIGGER, falls p1 in der Ordnung nach p2 liegt; EQUAL, falls p1 und p2 gleich sind
See Also:
X_ORDER, Y_ORDER, ANGULAR, setOrder(byte), compareX(gishur.x.XPoint, gishur.x.XPoint), compareY(gishur.x.XPoint, gishur.x.XPoint), compareAngle(gishur.x.XPoint, gishur.x.XPoint)

compare

public short compare(java.lang.Object o1,
                     java.lang.Object o2)
Überschreibt Comparitor.compare(). Akzeptiert werden Objekte des Types XPoint und KeyValueHolder, wobei bei KeyValueHolder-Objekten ihre key()-Werte ausgewertet werden (die also vom Typ XPoint sein sollten).
Overrides:
compare in class StdComparitor
Parameters:
o1 - erstes Objekt
o2 - zweites Objekt
Returns:
SMALLER, falls o1 in der Ordnung vor o2 liegt; BIGGER, falls o1 in der Ordnung nach o2 liegt; EQUAL, falls o1 und o2 gleich sind
See Also:
compare(gishur.x.XPoint, gishur.x.XPoint), Comparitor.compare(java.lang.Object, java.lang.Object)