gishur.x
Interface AreaIntersectable

All Known Implementing Classes:
XPolygon, XHalfplane, Area, XUPolygon

public interface AreaIntersectable

Dieses Interface sollten alle Klassen implementieren, die Schnitte mit anderen Flächen unterstützen.


Field Summary
static byte POINT_INSIDE
          Rückgabekonstante für locate: Punkt liegt innerhalb.
static byte POINT_ON_EDGE
          Rückgabekonstante für locate: Punkt liegt auf dem Rand.
static byte POINT_OUTSIDE
          Rückgabekonstante für locate: Punkt liegt außerhalb.
 
Method Summary
 boolean convex()
          Liefert true, falls das Objekt konvex ist.
 Area intersection(AreaIntersectable O, boolean is_convex)
          Flächenschnitt mit dem Objekt O.
 byte locate(XPoint q)
          Point-Location.
 boolean supportsIntersection(AreaIntersectable O, boolean is_convex)
          Liefert true, falls diese Klasse den Schnitt mit dem übergebenen Gebiet unterstützt.
 

Field Detail

POINT_INSIDE

public static final byte POINT_INSIDE
Rückgabekonstante für locate: Punkt liegt innerhalb.

POINT_ON_EDGE

public static final byte POINT_ON_EDGE
Rückgabekonstante für locate: Punkt liegt auf dem Rand.

POINT_OUTSIDE

public static final byte POINT_OUTSIDE
Rückgabekonstante für locate: Punkt liegt außerhalb.
Method Detail

locate

public byte locate(XPoint q)
Point-Location. Je nach Position des Punktes p wird eine der drei Konstanten zurückgegeben:

Parameters:
p - zu lokalisierender Punkt
Returns:
POINT_INSIDE, POINT_OUTSIDE oder POINT_ON_EDGE, je nach Lage des Punktes.

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.
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).
Parameters:
O - zu schneidendes Objekt
is_convex - falls true, ist das Objekt O konvex
Throws:
IntersectionException - falls der Schnitt nicht durchgeführt werden konnte.

convex

public boolean convex()
Liefert true, falls das Objekt konvex ist.
Returns:
true, falls konvex