gishur.x
Class XHalfplane

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

public class XHalfplane
extends XLine
implements AreaIntersectable

Eine Halbebene (also eine Gerade mit einer Innenseite).

Version:
1.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
 
Fields inherited from interface gishur.x.AreaIntersectable
POINT_INSIDE, POINT_ON_EDGE, POINT_OUTSIDE
 
Constructor Summary
XHalfplane()
          Leerer Konstruktor.
XHalfplane(double x1, double y1, double x2, double y2, byte inside)
          Konstruiert eine Halbebene durch die Punkte (x1,y1) und (x2,y2) und mit der Innenseite inside dezüglich der Richtung (x1,y1)->(x2,y2).
XHalfplane(XHalfplane l)
          Copy-Konstruktor.
XHalfplane(XLine l, byte inside)
          Geraden-Konstruktor.
XHalfplane(XPoint s, double slope, byte inside)
          Konstruiert eine Halbebene durch den Punkt s mit der Steigung slope und der Innenseite inside von s ausgehend in positiver X-Richtung.
XHalfplane(XPoint s, XPoint t, byte inside)
          Konstruiert eine Halbebene durch die Punkte s und t mit der Innenseite inside bezüglich der Richtung (s->t) Als Source-Punkt wird s genommen.
 
Method Summary
 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.
 boolean convex()
          Liefert true, falls das Objekt konvex ist.
 void copy(XHalfplane l)
          Copy-Routine übernimmt Daten von anderen Objekten.
 XPolygon getInfiniteXPolygon()
          Liefert das Schnittpolygon der Halbebene mit der 'unendlichen' Bounding Box.
 boolean in(XPoint q)
          Gibt true zrück, falls der Punkt in der Halbebene liegt - auf dem Rand gilt hierbei als außerhalb.
 Area intersection(AreaIntersectable O, boolean is_convex)
          Flächenschnitt mit dem Objekt O.
 byte locate(XPoint q)
          Point-Location.
 byte orientation()
          Liefert die Orientierung der Halbebene, also die Seite, auf der Innen ist bzgl. der Halbebene betrachtet als gerichtete Gerade.
 void setOrientation(byte inside)
          Setzt die Orientierung der Halbebene
 boolean supportsIntersection(AreaIntersectable O, boolean is_convex)
          Liefert true, falls diese Klasse den Schnitt mit dem übergebenen Gebiet unterstützt.
 java.lang.String toString()
          Überschreibt Object.toString().
 java.lang.String toString(boolean points, boolean slope, boolean y_abs, boolean orientation)
          Liefert einen String mit Angaben über das Objekt.
 
Methods inherited from class gishur.x.XLine
copy, equals, intersection, set, supportsIntersection, toString
 
Methods inherited from class gishur.x.XBaseline
angle, angle, calculatePoint, closestPoint, copyInfiniteChain, direction, flip, getDirectionVector, getInfiniteBoundIndex, getInfiniteBounds, getInfiniteEndPoint, getInfinitePoint, getInfiniteSegment, getPointInLineDirection, horizontal, incident, 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

XHalfplane

public XHalfplane()
Leerer Konstruktor. Erzeugt eine Gerade mit Steigung 0.

XHalfplane

public XHalfplane(double x1,
                  double y1,
                  double x2,
                  double y2,
                  byte inside)
Konstruiert eine Halbebene durch die Punkte (x1,y1) und (x2,y2) und mit der Innenseite inside dezüglich der Richtung (x1,y1)->(x2,y2). Als Source-Punkt wird (x1,y1) genommen.
Parameters:
x1,y1 - erster Punkt, durch den die Trenngerade gelegt wird
x2,y2 - zweiter Punkt, durch den die Trenngerade gelegt wird
inside - gibt an, auf welcher Seite 'innen' ist

XHalfplane

public XHalfplane(XPoint s,
                  XPoint t,
                  byte inside)
Konstruiert eine Halbebene durch die Punkte s und t mit der Innenseite inside bezüglich der Richtung (s->t) Als Source-Punkt wird s genommen.
Parameters:
s - erster Punkt, durch den die Trenngerade gelegt wird
t - zweiter Punkt, durch den die Trenngerade gelegt wird
inside - gibt an, auf welcher Seite 'innen' ist

XHalfplane

public XHalfplane(XPoint s,
                  double slope,
                  byte inside)
Konstruiert eine Halbebene durch den Punkt s mit der Steigung slope und der Innenseite inside von s ausgehend in positiver X-Richtung.
Parameters:
s - Punkt, durch den die Gerade gelegt wird
slope - Steigung (dies ist kein Winkel!)
inside - gibt an, auf welcher Seite 'innen' ist

XHalfplane

public XHalfplane(XLine l,
                  byte inside)
Geraden-Konstruktor. Die Halbebene wird durch die Gerade l und die Innenseite inside definiert.
Parameters:
l - XLine-Objekt
inside - gibt an, auf welcher Seite 'innen' ist

XHalfplane

public XHalfplane(XHalfplane l)
Copy-Konstruktor.
Parameters:
l - Objekt, von dem Daten übernommen werden
Method Detail

copy

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

toString

public java.lang.String toString(boolean points,
                                 boolean slope,
                                 boolean y_abs,
                                 boolean orientation)
Liefert einen String mit Angaben über das Objekt.
Parameters:
points - Start-Endpunktinformationen
slope - Steigungsinformation enthalten
y_abs - y_abs-Informationen enthalten
Returns:
String-Repräsentation des Objektes

toString

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

orientation

public byte orientation()
Liefert die Orientierung der Halbebene, also die Seite, auf der Innen ist bzgl. der Halbebene betrachtet als gerichtete Gerade.
Returns:
die Orientierung

setOrientation

public void setOrientation(byte inside)
Setzt die Orientierung der Halbebene

in

public boolean in(XPoint q)
Gibt true zrück, falls der Punkt in der Halbebene liegt - auf dem Rand gilt hierbei als außerhalb.
Parameters:
p - zu testender Punkt
Returns:
true, falls p innerhalb des Polygons liegt, ansonsten false
See Also:
locate(gishur.x.XPoint)

locate

public byte locate(XPoint q)
Point-Location. Je nach Position des Punktes p wird eine der drei Konstanten zurückgegeben:
Specified by:
locate in interface AreaIntersectable
Parameters:
p - zu lokalisierender Punkt
Returns:
POINT_INSIDE, POINT_OUTSIDE oder POINT_ON_EDGE, je nach Lage des Punktes.

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.
Overrides:
contains in class XBaseline
Parameters:
x,y - Koordinaten des Punktes
Returns:
true, falls Schnitt nicht leer.

getInfiniteXPolygon

public XPolygon getInfiniteXPolygon()
Liefert das Schnittpolygon der Halbebene mit der 'unendlichen' Bounding Box. Das unendliche Polygon ist immer links orientiert!
Returns:
Schnittpolygon

convex

public boolean convex()
Liefert true, falls das Objekt konvex ist.
Specified by:
convex in interface AreaIntersectable
Returns:
true, falls konvex

supportsIntersection

public boolean supportsIntersection(AreaIntersectable O,
                                    boolean is_convex)
Liefert true, falls diese Klasse den Schnitt mit dem übergebenen Gebiet unterstützt. Hier sollte wirklich nur dann true zurückgegeben werden, wenn in dieser Klasse eine entsprechende Schnittroutine existiert.
Specified by:
supportsIntersection in interface AreaIntersectable
Parameters:
O - zu schneidendes Objekt
is_convex - falls true, ist das Objekt O konvex
Returns:
true, falls Schnittest erfolgen kann

intersection

public Area intersection(AreaIntersectable O,
                         boolean is_convex)
Flächenschnitt mit dem Objekt O. Diese Methode sollte am Besten nur von einem Area-Objekt aufgerufen werden. Kann der Schnitt nicht berechnet werden, sollte ein IntersectionException ausgelöst werden (dies sollte aber in Übereinstimmung mit supportsAreaIntersection geschehen).
Specified by:
intersection in interface AreaIntersectable
Parameters:
O - zu schneidendes Objekt
is_convex - falls true, ist das Objekt O konvex
Throws:
IntersectionException - falls der Schnitt nicht durchgeführt werden konnte.