gishur.x
Class XSegment

java.lang.Object
  |
  +--gishur.x.XObject
        |
        +--gishur.x.XBaseline
              |
              +--gishur.x.XSegment
All Implemented Interfaces:
AffineXTransformable, java.lang.Cloneable, Cloneable, Intersectable, java.io.Serializable

public class XSegment
extends XBaseline
implements Intersectable, java.lang.Cloneable

Ein Segment in Weltkoordinaten. Ein Segment ist auch eine XBaseline.

Version:
2.0
Author:
Thomas Wolf
See Also:
Serialized Form

Fields inherited from class gishur.x.XBaseline
DIRECTION_DOWN, DIRECTION_LEFT, DIRECTION_RIGHT, DIRECTION_UP, INFINITE_BOUND
 
Constructor Summary
XSegment()
          Leerer Konstruktor.
XSegment(double x1, double y1, double x2, double y2)
          Konstruiert ein Segment durch die Punkte (x1,y1) und (x2,y2).
XSegment(XPoint s, XPoint t)
          Konstruiert ein Segment durch die Punkte s und t.
XSegment(XSegment s)
          Copy-Konstruktor.
 
Method Summary
 XPoint calculatePoint(double x)
          Berechnet den Punkt auf dem Segment, der die x-Koordinate x besitzt.
 XPoint calculatePointOn(double length)
          Berechnet den Punkt auf dem Segment, der vom Start aus length entfernt liegt.
 boolean contains(double x, double y)
          Liefert true, falls das Objekt den Punkt (x,y) enthält, d.h. der Schnitt mit dem Punkt nicht leer ist.
 void copy(XSegment s)
          Copy-Routine übernimmt Daten von anderen Objekten.
 boolean equals(java.lang.Object O)
          Überschreibt Object.equals(Object)
 XPoint getEndPoint()
          Liefert den Punkt des Segmentes, der lexikographisch zuletzt kommt, d.h. er hat die größte X-Koordinate bzw. bei gleichen X-Koordinaten die größte Y-Koordinate.
 XPoint getStartPoint()
          Liefert den Punkt des Segmentes, der lexikographisch zuerst kommt, d.h. er hat die kleinste X-Koordinate bzw. bei gleichen X-Koordinaten die kleinste Y-Koordinate.
 boolean incident(XBaseline b)
          Liefert true, falls sich dieses Objekt und b in einem Randpunkt berühren.
 Intersection intersection(java.lang.Object O)
          Schneidet dieses Objekt mit dem Objekt O und liefert ein entsprechendes Intersection-Objekt.
 double length()
          Liefert die Länge des Segmentes.
 boolean supportsIntersection(java.lang.Object O)
          Liefert true, falls diese Klasse den Schnitt mit dem übergebenen Objekt unterstützt.
 void swapPoints()
          Vertauscht den Source- mit dem Target-Punkt.
 java.lang.String toString()
          Überschreibt Object.toString().
 java.lang.String toString(boolean source, boolean target, boolean slope)
          Liefert einen String mit Angaben über das Objekt.
 
Methods inherited from class gishur.x.XBaseline
angle, angle, closestPoint, copyInfiniteChain, direction, flip, getDirectionVector, getInfiniteBoundIndex, getInfiniteBounds, getInfiniteEndPoint, getInfinitePoint, getInfiniteSegment, getPointInLineDirection, horizontal, liesOn, oppositeDirection, orientation, orthogonal, orthogonal, parallel, plumb, plumbTo, rotate, rotate, rotateTo, scale, set, set, similarDirection, slope, source, target, transform_XObject, transform, translate, vector, vertical, y_abs
 
Methods inherited from class gishur.x.XObject
clone, copy, getMutable, inverseTransform_XObject, mutable, restoreMutability, rotate_XObject, scale_XObject, transform_XObject, translate_XObject, translate_XObject
 
Methods inherited from class java.lang.Object
finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

XSegment

public XSegment()
Leerer Konstruktor. Erzeugt einen Segment mit Start- und Endpunkt (0,0).

XSegment

public XSegment(double x1,
                double y1,
                double x2,
                double y2)
Konstruiert ein Segment durch die Punkte (x1,y1) und (x2,y2). Als Source-Punkt wird (x1,y1) und als target (x2,y2) genommen.
Parameters:
x1,y1 - Startpunkt
x2,y2 - Endpunkt

XSegment

public XSegment(XPoint s,
                XPoint t)
Konstruiert ein Segment durch die Punkte s und t. Als Source-Punkt wird s und als target t genommen.
Parameters:
s - Startpunkt
t - Endpunkt

XSegment

public XSegment(XSegment s)
Copy-Konstruktor.
Parameters:
r - Objekt, von dem Daten übernommen werden
Method Detail

copy

public void copy(XSegment s)
Copy-Routine übernimmt Daten von anderen Objekten.
Parameters:
l - Objekt, von dem Daten übernommen werden

toString

public java.lang.String toString(boolean source,
                                 boolean target,
                                 boolean slope)
Liefert einen String mit Angaben über das Objekt.
Parameters:
source - Quellpunktinformationen enthalten
target - Zielpunktinformationen enthalten
slope - Slope-Informationen enthalten
Returns:
String-Repräsentation des Objektes

toString

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

equals

public boolean equals(java.lang.Object O)
Überschreibt Object.equals(Object)
Overrides:
equals in class XBaseline
Parameters:
O - Objekt, mit dem verglichen werden soll
Returns:
true, falls Objekte gleich
See Also:
Object.equals(java.lang.Object)

length

public double length()
Liefert die Länge des Segmentes.
Returns:
Länge

swapPoints

public void swapPoints()
Vertauscht den Source- mit dem Target-Punkt.

calculatePoint

public XPoint calculatePoint(double x)
Berechnet den Punkt auf dem Segment, der die x-Koordinate x besitzt. Falls es keinen solchen Punkt auf dem Segment gibt, wird null zurückgegeben.
Overrides:
calculatePoint in class XBaseline
Parameters:
x - X-Koordinate
Returns:
Punkt auf dem Segment

calculatePointOn

public XPoint calculatePointOn(double length)
Berechnet den Punkt auf dem Segment, der vom Start aus length entfernt liegt. Wenn length<0 ist, wird vom Ende aus (rückwärts) gemessen. Wenn es keinen Punkt auf dem Segment in length Entfernung gibt, wird null zurückgegeben.
Parameters:
length - Entfernung vom Start aus
Returns:
Punkt auf dem Strahl in einer Entfernung von length vom Start aus

incident

public boolean incident(XBaseline b)
Liefert true, falls sich dieses Objekt und b in einem Randpunkt berühren.
Overrides:
incident in class XBaseline
Parameters:
b - XBaseline-Objekt, mit dem Berührung getestet wird.
Returns:
true, falls die Objekte inzidieren
See Also:
XBaseline.incident(gishur.x.XBaseline)

getStartPoint

public XPoint getStartPoint()
Liefert den Punkt des Segmentes, der lexikographisch zuerst kommt, d.h. er hat die kleinste X-Koordinate bzw. bei gleichen X-Koordinaten die kleinste Y-Koordinate.
Returns:
lexikographischer Startpunkt

getEndPoint

public XPoint getEndPoint()
Liefert den Punkt des Segmentes, der lexikographisch zuletzt kommt, d.h. er hat die größte X-Koordinate bzw. bei gleichen X-Koordinaten die größte Y-Koordinate.
Returns:
lexikographischer Endpunkt

contains

public boolean contains(double x,
                        double y)
Liefert true, falls das Objekt den Punkt (x,y) enthält, d.h. der Schnitt mit dem Punkt nicht leer ist.
Specified by:
contains in interface Intersectable
Overrides:
contains in class XBaseline
Parameters:
x,y - Koordinaten des Punktes
Returns:
true, falls Schnitt nicht leer.

supportsIntersection

public boolean supportsIntersection(java.lang.Object O)
Liefert true, falls diese Klasse den Schnitt mit dem übergebenen Objekt unterstützt. Hier sollte wirklich nur dann true zurückgegeben werden, wenn in dieser Klasse eine entsprechende Schnittroutine existiert.
Specified by:
supportsIntersection in interface Intersectable
Overrides:
supportsIntersection in class XBaseline
Parameters:
O - zu schneidendes Objekt
Returns:
true, falls Schnittest erfolgen kann

intersection

public Intersection intersection(java.lang.Object O)
Schneidet dieses Objekt mit dem Objekt O und liefert ein entsprechendes Intersection-Objekt. Dieses ist immer !=null, was nicht heißt, daß ein Schnitt existiert. Existiert keine passende Schnittmethode in dieser Klasse, so wird versucht, die Schnittmethode des Objektes O aufzurufen, falls vorhanden. Schlägt alles fehl, so wird ein IntersectionException ausgelöst (der nicht unbedingt abgefangen werden muß, da es ein RuntimeException ist.
Specified by:
intersection in interface Intersectable
Overrides:
intersection in class XBaseline
Parameters:
O - zu schneidendes Objekt
Throws:
IntersectionException - falls der Schnitt nicht durchgeführt werden konnte.