gishur.x
Class Area

java.lang.Object
  |
  +--gishur.x.Area
All Implemented Interfaces:
AreaIntersectable

public class Area
extends java.lang.Object
implements AreaIntersectable

Area Stellt ein nicht unbedingt zusammenhängendes Gebiet dar.

Version:
1.0
Author:
Thomas Wolf

Field Summary
static byte ASSUME_CONVEX
          Konvexitätsmodus: Falls so gesetzt, wird immer angenommen das Objekt sei konvex.
static byte ASSUME_NOT_CONVEX
          Konvexitätsmodus: Falls so gesetzt, wird immer angenommen das Objekt sei nicht konvex.
static byte TEST_CONVEXITY
          Konvexitätsmodus: Falls so gesetzt, wird vor einem Schnitt die Konvexität getestet.
 
Fields inherited from interface gishur.x.AreaIntersectable
POINT_INSIDE, POINT_ON_EDGE, POINT_OUTSIDE
 
Constructor Summary
Area()
          Erzeugt ein leeres Gebiet.
Area(AreaIntersectable a)
          Erzeugt ein Gebiet, das durch das AreaIntersectable a begrenzt wird.
Area(AreaIntersectable[] a)
          Erzeugt ein Gebiet, das durch das AreaIntersectable-Array a begrenzt wird.
Area(AreaIntersectable a1, AreaIntersectable a2)
          Erzeugt ein Gebiet, das durch die AreaIntersectables a1 und a2 begrenzt wird.
Area(SimpleList L)
          Erzeugt ein Gebiet, das durch die Liste L mit AreaIntersectables gegeben ist.
 
Method Summary
 void add(AreaIntersectable a)
          Fügt ein AreaIntersectable-Objekt an.
 void clear()
          Löscht das Gebiet.
 boolean convex()
          Liefert true, falls das Gebiet konvex ist.
 boolean convex(int i)
          Liefert true, falls das i-te Randobjekt konvex ist.
 byte convexMode()
          Liefert den Konvexitätsmodus.
 AreaIntersectable element(int i)
          Liefert das i-te Randelement zurück.
 boolean empty()
          Liefert true, falls das Gebiet leer ist.
 Area intersection(Area area)
          Schneidet die Fläche area mit dieser und gibt das Ergebnis zurück.
 Area intersection(AreaIntersectable O, boolean convex)
          Flächenschnitt mit dem Objekt O.
 int length()
          Liefert die Anzahl der Randkomponenten im Area-Objekt zurück.
 byte locate(XPoint q)
          Point-Location.
 void set(AreaIntersectable a)
          Setzt das Gebiet auf den durch a bestimmten Bereich.
 void set(AreaIntersectable[] a)
          Setzt das Gebiet auf den durch das AreaIntersectable-Array a bestimmten Bereich.
 void set(AreaIntersectable a1, AreaIntersectable a2)
          Setzt das Gebiet auf den durch a1 und a2 bestimmten Bereich.
 void set(SimpleList L)
          Setzt das Gebiet auf den Inhalt der Liste L.
 void setConvexMode(byte mode)
          Setzt den Konvexitätsmodus.
 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().
 XHalfplane xhalfplane()
          Liefert das XHalfplane, falls das Gebiet aus genau einem XHalfplane-Objekt besteht.
 XPolygon xpolygon()
          Liefert das XPolygon, falls das Gebiet aus genau einem XPolygon-Objekt besteht.
 XUPolygon xupolygon()
          Liefert das XUPolygon, falls das Gebiet aus genau einem XUPolygon-Objekt besteht.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

TEST_CONVEXITY

public static final byte TEST_CONVEXITY
Konvexitätsmodus: Falls so gesetzt, wird vor einem Schnitt die Konvexität getestet.

ASSUME_NOT_CONVEX

public static final byte ASSUME_NOT_CONVEX
Konvexitätsmodus: Falls so gesetzt, wird immer angenommen das Objekt sei nicht konvex.

ASSUME_CONVEX

public static final byte ASSUME_CONVEX
Konvexitätsmodus: Falls so gesetzt, wird immer angenommen das Objekt sei konvex.
Constructor Detail

Area

public Area()
Erzeugt ein leeres Gebiet.

Area

public Area(AreaIntersectable a)
Erzeugt ein Gebiet, das durch das AreaIntersectable a begrenzt wird.
Parameters:
a - neues Randobjekt

Area

public Area(AreaIntersectable a1,
            AreaIntersectable a2)
Erzeugt ein Gebiet, das durch die AreaIntersectables a1 und a2 begrenzt wird.
Parameters:
a1 - neues Randobjekt
a2 - neues Randobjekt

Area

public Area(AreaIntersectable[] a)
Erzeugt ein Gebiet, das durch das AreaIntersectable-Array a begrenzt wird.
Parameters:
a - Array mit Randobjekten

Area

public Area(SimpleList L)
Erzeugt ein Gebiet, das durch die Liste L mit AreaIntersectables gegeben ist.
Parameters:
a - Array mit Randobjekten
Method Detail

toString

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

set

public void set(AreaIntersectable a)
Setzt das Gebiet auf den durch a bestimmten Bereich.
Parameters:
a - neues Randobjekt

set

public void set(AreaIntersectable[] a)
Setzt das Gebiet auf den durch das AreaIntersectable-Array a bestimmten Bereich.
Parameters:
a - Array mit neuen Randobjekten

set

public void set(AreaIntersectable a1,
                AreaIntersectable a2)
Setzt das Gebiet auf den durch a1 und a2 bestimmten Bereich.
Parameters:
a1 - neues Randobjekt
a2 - neues Randobjekt

set

public void set(SimpleList L)
Setzt das Gebiet auf den Inhalt der Liste L.
Parameters:
L - Liste mit AreaIntersectables

add

public void add(AreaIntersectable a)
Fügt ein AreaIntersectable-Objekt an. Der Schnitt aller AreaIntersectables ist das Gebiet. Bei add wird jedoch keine Schnittroutine aufgerufen.
Parameters:
a - neues Randobjekt

clear

public void clear()
Löscht das Gebiet.

empty

public boolean empty()
Liefert true, falls das Gebiet leer ist.
Returns:
true, falls Gebiet leer ist

length

public int length()
Liefert die Anzahl der Randkomponenten im Area-Objekt zurück.
Returns:
Anzahl der Randkomponenten

setConvexMode

public void setConvexMode(byte mode)
Setzt den Konvexitätsmodus.
Parameters:
mode - neuer Modus

convexMode

public byte convexMode()
Liefert den Konvexitätsmodus.

element

public AreaIntersectable element(int i)
Liefert das i-te Randelement zurück.
Parameters:
i - Index des Randelements
Returns:
i-tes Randelement

xhalfplane

public XHalfplane xhalfplane()
Liefert das XHalfplane, falls das Gebiet aus genau einem XHalfplane-Objekt besteht.
Returns:
XHalfplane-Objekt

xpolygon

public XPolygon xpolygon()
Liefert das XPolygon, falls das Gebiet aus genau einem XPolygon-Objekt besteht.
Returns:
XPolygon-Objekt

xupolygon

public XUPolygon xupolygon()
Liefert das XUPolygon, falls das Gebiet aus genau einem XUPolygon-Objekt besteht.
Returns:
XUPolygon-Objekt

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.

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 AreaIntersectable
is_convex - falls true, ist das Objekt O konvex
Returns:
true, falls Schnittest erfolgen kann

intersection

public Area intersection(Area area)
Schneidet die Fläche area mit dieser und gibt das Ergebnis zurück.
Parameters:
area - Fläche
Returns:
Schnittfläche

intersection

public Area intersection(AreaIntersectable O,
                         boolean convex)
Flächenschnitt mit dem Objekt O.
Specified by:
intersection in interface AreaIntersectable
Parameters:
O - zu schneidendes Objekt
convex - falls true, ist das Objekt O konvex
Returns:
Area-Objekt

convex

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

convex

public boolean convex(int i)
Liefert true, falls das i-te Randobjekt konvex ist.
Parameters:
i - Index des zu untersuchenden Randobjektes
Returns:
true, falls i-tes Objekt konvex