gishur.x
Class XPoint

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

public class XPoint
extends XObject
implements AffineXTransformable, java.lang.Cloneable

Ein Punkt-Objekt für die Ebene in einem Weltkoordinatensystem mit Double-Werten.

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

Field Summary
static double IDENTICAL
          Der minimale Abstand zwischen zwei Punkten, ab dem sie 'gleich' sind.
static byte ORIENTATION_COLLINEAR
          Punkt liegt auf der Geraden.
static byte ORIENTATION_LEFT
          Punkt liegt links.
static byte ORIENTATION_RIGHT
          Punkt liegt rechts.
static double WEAK_IDENTICAL
           
 double x
          X- und Y-Koordinate.
 double y
          X- und Y-Koordinate.
 
Constructor Summary
XPoint()
          Leerer Konstruktor.
XPoint(double x, double y)
          Erzeugt einen Punkt (0,0).
XPoint(XPoint p)
          Copy-Konstruktor.
XPoint(XPoint a, XPoint b)
          Erzeugt einen Punkt, der genau zwischen a und b liegt.
 
Method Summary
static double angle(double x, double y, double x1, double y1, double x2, double y2)
          Liefert den Winkel (x1,y1)-(x,y)-(x2,y2) (in Radiant).
 double angle(XPoint q)
          Liefert den Winkel des Strahls von this nach q mit der X-Achse
 double angle(XPoint q, XPoint r)
          Liefert den Winkel q-this-r (in Radiant).
 void copy(XPoint p)
          Copy-Routine übernimmt Daten von anderen Objekten.
 double distance(XPoint p)
          Euklidischer Abstand zum Beszugspunkt p.
 boolean equals(double x, double y)
          Wie equals(Object), nur mit der Übergabe von Punktparametern.
 boolean equals(java.lang.Object O)
          Überschreibt Object.equals(Object)
 boolean isInfinite()
          Liefert true, falls der Punkt im 'Unendlichen' liegt, d.h. ein unendlicher Endpunkt eines unendlichen Segmentes o.ä. ist.
 double length()
          Liefert die Länge des Vektors (das ist dasselbe wie die Norm des Vektors).
 double norm()
          Liefert die euklidische Norm des Punktes (also den euklidischen Abstand zum Nullpunkt.
 void normalize()
          Normalisiert den Vektor.
static byte opposite(byte orientation)
          Liefert zur 'Seite' orientation die entgegengesetzte Orientierungskonstante.
 byte orientation(XPoint a, XPoint b)
          Liefert die Orientierung des Punktes this relativ zur gerichteten Geraden a->b.
static byte orientation(XPoint a, XPoint b, XPoint c)
          Liefert die Orientierung des Punktes c relativ zur gerichteten Geraden a->b.
 void rotate(XPoint center, double angle)
          Dreht das Objekt um den Punkt center mit dem Winkel angle.
 void rotate(XPoint center, XPoint start, XPoint end)
          Dreht das Objekt um den Punkt center mit dem Winkel start-center-end.
 void scale(XPoint center, double xscale, double yscale)
          Skaliert das Objekt mit xscale und yscale so, daß der Punkt middle davon unberührt bleibt.
 void set(double x, double y)
          Setzt den Punkt auf (x,y).
 void setLength(double length)
          Setzt die Länge des Vektors auf den übergebenen Wert, sofern der Punkt nicht (0,0) (also der 0-Vektor) ist (die Richtung bleibt erhalten). setLength(1) bedeutet beispielsweise die Normalisierung des Vektors.
 void setPolar(double angle, double length)
          Setzt den Punkt auf (angle,length) in Polarkoordinaten
 double squareDistance(XPoint p)
          Quadrierte Distanz dieses Punktes zum Punkt p.
 java.lang.String toString()
          Überschreibt Object.toString().
 java.lang.String toString(boolean brackets)
          Liefert die String-Repräsentation des Punktes ohne den Klassennamen.
 XObject transform_XObject(double m00, double m01, double m02, double m10, double m11, double m12)
          Transforms this XObject by the given affine transformation matrix.
 void transform(double m00, double m01, double m02, double m10, double m11, double m12)
          Transformiert das Objekt mit der übergebenen Transformationsmatrix.
 void translate(double dx, double dy)
          Verschiebt das Objekt um den Vektor (dx,dy).
 void translatePolar(double angle, double length)
          Verschiebt den Punkt um den durch den Winkel angle und der Länge length in Polarkoordinaten beschriebenen Vektor.
 boolean weak_equals(XPoint p)
          Vergleicht zwei Punkte mit höherer Toleranz.
 double x()
          Liefert die X-Koordinaten des Punktes
 double y()
          Liefert die Y-Koordinaten des Punktes
 
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
 

Field Detail

IDENTICAL

public static final double IDENTICAL
Der minimale Abstand zwischen zwei Punkten, ab dem sie 'gleich' sind. Diese Konstante wird noch in vielen anderen Methoden zu Rundung benötigt!

WEAK_IDENTICAL

public static final double WEAK_IDENTICAL

ORIENTATION_LEFT

public static final byte ORIENTATION_LEFT
Punkt liegt links.

ORIENTATION_RIGHT

public static final byte ORIENTATION_RIGHT
Punkt liegt rechts.

ORIENTATION_COLLINEAR

public static final byte ORIENTATION_COLLINEAR
Punkt liegt auf der Geraden.

x

public double x
X- und Y-Koordinate.

y

public double y
X- und Y-Koordinate.
Constructor Detail

XPoint

public XPoint()
Leerer Konstruktor. Erzeugt einen Punkt aufg (0,0).

XPoint

public XPoint(double x,
              double y)
Erzeugt einen Punkt (0,0).
Parameters:
x,y - Koordinaten für den Punkt

XPoint

public XPoint(XPoint p)
Copy-Konstruktor.
Parameters:
p - Objekt, von dem Daten übernommen werden

XPoint

public XPoint(XPoint a,
              XPoint b)
Erzeugt einen Punkt, der genau zwischen a und b liegt.
Parameters:
a,b - Punkte, zwischen denen der neue Punkt liegen soll
Method Detail

copy

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

toString

public java.lang.String toString(boolean brackets)
Liefert die String-Repräsentation des Punktes ohne den Klassennamen.
Parameters:
brackets - Falls true, wird "(x,y)" statt "x,y" zurückgegeben.
Returns:
String-Repräsentation des Punktes

toString

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

equals

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

weak_equals

public boolean weak_equals(XPoint p)
Vergleicht zwei Punkte mit höherer Toleranz.
Parameters:
p - Punkt mit dem verglichen werden soll
Returns:
true, falls Punkte gleich

equals

public boolean equals(double x,
                      double y)
Wie equals(Object), nur mit der Übergabe von Punktparametern.
Parameters:
x,y - Koordinaten des Vergleichspunktes
Returns:
true, falls Punkte gleich

x

public double x()
Liefert die X-Koordinaten des Punktes
Returns:
X-Koordinate

y

public double y()
Liefert die Y-Koordinaten des Punktes
Returns:
Y-Koordinate

set

public void set(double x,
                double y)
Setzt den Punkt auf (x,y).
Parameters:
x,y - neue Koordinaten

setPolar

public void setPolar(double angle,
                     double length)
Setzt den Punkt auf (angle,length) in Polarkoordinaten
Parameters:
angle - Winkel des Vektors
length - Länge des Vektors

setLength

public void setLength(double length)
Setzt die Länge des Vektors auf den übergebenen Wert, sofern der Punkt nicht (0,0) (also der 0-Vektor) ist (die Richtung bleibt erhalten). setLength(1) bedeutet beispielsweise die Normalisierung des Vektors.
Parameters:
length - neue Länge des Vektors

translatePolar

public void translatePolar(double angle,
                           double length)
Verschiebt den Punkt um den durch den Winkel angle und der Länge length in Polarkoordinaten beschriebenen Vektor.
Parameters:
angle - Winkel des Verschiebungsvektors
length - Länge des Verschiebungsvektors

normalize

public void normalize()
Normalisiert den Vektor.

orientation

public static final byte orientation(XPoint a,
                                     XPoint b,
                                     XPoint c)
Liefert die Orientierung des Punktes c relativ zur gerichteten Geraden a->b.
Parameters:
a,b - Punkte, die die Gerade beschreiben
c - Punkt, dessen Orientierung zu a->b brechnet werden soll
Returns:
Orientierungskonstante

opposite

public static final byte opposite(byte orientation)
Liefert zur 'Seite' orientation die entgegengesetzte Orientierungskonstante.
Parameters:
orientation - Orientierungskonstante
Returns:
entgegengesetzte Orientierungskonstante

orientation

public byte orientation(XPoint a,
                        XPoint b)
Liefert die Orientierung des Punktes this relativ zur gerichteten Geraden a->b.
Parameters:
a,b - Punkte, die die Gerade beschreiben
Returns:
Orientierungskonstante

angle

public static final double angle(double x,
                                 double y,
                                 double x1,
                                 double y1,
                                 double x2,
                                 double y2)
Liefert den Winkel (x1,y1)-(x,y)-(x2,y2) (in Radiant). Der Winkel ist immer positiv und wird entgegen Uhrzeigerrichtung gemessen.
Parameters:
(x1,y1),(x2,y2) - die Schenkelendpunkte des Winkels
Returns:
Winkel (x1,y1)-(x,y)-(x2,y2)

angle

public double angle(XPoint q,
                    XPoint r)
Liefert den Winkel q-this-r (in Radiant). Der Winkel ist immer positiv und wird entgegen Uhrzeigerrichtung gemessen.
Parameters:
q,r - die Schenkelendpunkte des Winkels
Returns:
Winkel q-this-r

angle

public double angle(XPoint q)
Liefert den Winkel des Strahls von this nach q mit der X-Achse
Parameters:
q - Punkt
Returns:
Winkel

squareDistance

public double squareDistance(XPoint p)
Quadrierte Distanz dieses Punktes zum Punkt p.
Parameters:
p - Bezugspunkt

distance

public double distance(XPoint p)
Euklidischer Abstand zum Beszugspunkt p.
Parameters:
p - Bezugspunkt

norm

public double norm()
Liefert die euklidische Norm des Punktes (also den euklidischen Abstand zum Nullpunkt.

length

public double length()
Liefert die Länge des Vektors (das ist dasselbe wie die Norm des Vektors).
Returns:
Länge bzw. Norm

isInfinite

public boolean isInfinite()
Liefert true, falls der Punkt im 'Unendlichen' liegt, d.h. ein unendlicher Endpunkt eines unendlichen Segmentes o.ä. ist.
Returns:
true, falls nicht in der endlichen Boundingbox

transform

public void transform(double m00,
                      double m01,
                      double m02,
                      double m10,
                      double m11,
                      double m12)
Transformiert das Objekt mit der übergebenen Transformationsmatrix.
Specified by:
transform in interface AffineXTransformable
Parameters:
m00,m01,m02 - erste Zeile der Transformationsmatrix
m10,m11,m12 - zweite Zeile der Transformationsmatrix

scale

public void scale(XPoint center,
                  double xscale,
                  double yscale)
Skaliert das Objekt mit xscale und yscale so, daß der Punkt middle davon unberührt bleibt.
Specified by:
scale in interface AffineXTransformable
Parameters:
middle - Mittelpunkt, der nicht verschoben werden soll
xscale - Skalierung der X-Achse
yscale - Skalierung der Y-Achse

rotate

public void rotate(XPoint center,
                   double angle)
Dreht das Objekt um den Punkt center mit dem Winkel angle.
Specified by:
rotate in interface AffineXTransformable
Parameters:
center - Drehpunkt
angle - Drehwinkel

rotate

public void rotate(XPoint center,
                   XPoint start,
                   XPoint end)
Dreht das Objekt um den Punkt center mit dem Winkel start-center-end.
Specified by:
rotate in interface AffineXTransformable
Parameters:
center - Drehpunkt
start - Startpunkt
end - Endpunkt

translate

public void translate(double dx,
                      double dy)
Verschiebt das Objekt um den Vektor (dx,dy).
Specified by:
translate in interface AffineXTransformable
Parameters:
(dx,dy) - Verschiebungsvektor

transform_XObject

public XObject transform_XObject(double m00,
                                 double m01,
                                 double m02,
                                 double m10,
                                 double m11,
                                 double m12)
Transforms this XObject by the given affine transformation matrix.
Overrides:
transform_XObject in class XObject
Parameters:
m00,m01,m02 - first row of the transformation matrix
m10,m11,m12 - second row of the transformation matrix
Returns:
Transformed XObject (this, only if it is mutable, otherwise a new XObject represeting the transformed object).