|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--gishur.x.XObject | +--gishur.x.XPolyline | +--gishur.x.XPolygon
Ein Polygon.
Field Summary | |
static byte |
ORIENTATION_LEFT
Polygon ist entgegen dem Uhrzeigersinn orientiert. |
static byte |
ORIENTATION_RIGHT
Polygon ist im Uhrzeigersinn orientiert. |
Fields inherited from interface gishur.x.AreaIntersectable |
POINT_INSIDE, POINT_ON_EDGE, POINT_OUTSIDE |
Constructor Summary | |
XPolygon()
Leerer Konstruktor. |
|
XPolygon(SimpleList L)
Konstruiert ein Polygon aus der Liste L mit XPoint-, XSegment- und XRay-Objekten. |
|
XPolygon(java.lang.String s)
Einfacher String-Konstruktor. s muß die Form "...(x1,y1)...(x2,y2).." haben. |
|
XPolygon(XPoint[] points)
Konstruiert ein XPolygon mit dem Punktarray points. |
|
XPolygon(XPolyline pol)
Copy-Konstruktor. |
Method Summary | |
XSegment |
borderSegment(int i)
Liefert das Randsegment Nummer i. |
double |
circumference()
Berechnet den Umfang des Polygons. |
java.lang.Object |
clone()
Überschreibt Object.clone(). java.lang.Object#clone |
int |
closestSegment(XPoint p,
int i1,
int i2)
Liefert den Index des Segmentes, das den zu p nächsten Punkt (nicht als source()!) |
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. |
XPolygon |
convexPolygonIntersection(XPolygon polygon)
Schneidet das Polygon polygon mit diesem Polygon. Vorbedingungen: Beide Polygon müssen konvex und entgegen Uhrzeigerrichtung (links) orientiert sein. |
int |
countBorderSegments()
Liefert die Anzahl der Randsegmente. |
boolean |
equals(java.lang.Object O)
Überschreibt Object.equals(Object) |
int |
findBorderIndex(int pointindex,
boolean start)
Sucht das Randelement, das mit dem Punkt mit Index pointindex beginnt, falls start==true bzw. endet, falls start==false. |
SimpleList |
getSegmentList()
Liefert die Segmentliste des Polygons. |
SimpleList |
getSegmentList(byte orientation)
Liefert die Segmentliste des Polygons in der Orientierung orientation. |
boolean |
in(XPoint q)
Ein Point-in-Polygon Test. |
Area |
intersection(AreaIntersectable O,
boolean is_convex)
Flächenschnitt mit dem Objekt O. |
Intersection |
intersection(java.lang.Object O)
Schneidet dieses Objekt mit dem Objekt O und liefert ein entsprechendes Intersection-Objekt. |
int |
liesOn(XPoint p)
Sucht das erste borderSegment, auf dem der Punkt p liegt und liefert dessen Index oder -1, falls der Punkt nicht auf dem Rand liegt. p kann kein source()-Punkt eines Randsegmentes sein! |
XLine |
line(int i)
Liefert eine Gerade durch den i-ten und (i+1)-ten Punkt des Polygons. |
byte |
locate(XPoint q)
Point-Location. |
XPoint[] |
MIC()
Sucht den größten einbeschrieben Kreis im Polygon mit Hilfe der Klasse gishur.x.voronoi.Skeleton. |
byte |
orientation()
Berechnet die Orientierung des Polygons und gibt eine Orientierungskonstante zurück. |
SimpleList |
polygonIntersection(XPolygon pol)
Schneidet in Zeit O(n*log(n)) das Polygon mit dem Polygon pol und gibt eine Liste mit den Schnittpolygonen zurück. |
int |
scanFirstIntersectingSegment(int i1,
int i2,
XBaseline l)
Sucht in Umlaufrichtung das erste Segment zwischen i1 und i2 (inklusive), das das Linienobjekt l schneidet und gibt dessen Index zurück. |
XSegment |
segment(int i)
Liefert das Segment vom i-ten bis zum (i+1)ten Punkt des Polygons. |
void |
setOrientation(byte orientation)
Orientiert das Polygon entsprechend der übergebenen Orientierungskonstante. |
SimpleList |
skeleton()
Berechnet das Skelett (auch Medial Axis) des einfachen Polygons mit Hilfe der Klasse gishur.x.voronoi.Skeleton. |
XPoint |
slidePoint(XPoint p,
double dist)
Verschiebt den Punkt p auf dem Polygonrand um dist. |
boolean |
supportsIntersection(AreaIntersectable O,
boolean is_convex)
Liefert true, falls diese Klasse den Schnitt mit dem übergebenen Gebiet unterstützt. |
boolean |
supportsIntersection(java.lang.Object O)
Liefert true, falls diese Klasse den Schnitt mit dem übergebenen Objekt unterstützt. |
java.lang.String |
toString()
Überschreibt Object.toString(). |
XPolygon |
vis(XPoint p)
Berechnet mit Hilfe der Klasse visPolygon das Sichtbarkeitspolygon bezüglich des Punktes p in O(n) Zeit. |
Methods inherited from class gishur.x.XPolyline |
add, add, checkSimplicity, checkSimplicity, clear, closestPoint, convex, copy, copy, cycle, empty, findPoint, findPoint, getMinMaxPoints, indexOf, insert, insert, kinkPoint, length, point, remove, reverse, rotate, rotate, scale, set, set, setPoint, simple, toString, transform_XObject, transform, translate |
Methods inherited from class gishur.x.XObject |
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 |
Methods inherited from interface gishur.x.AreaIntersectable |
convex |
Field Detail |
public static final byte ORIENTATION_LEFT
public static final byte ORIENTATION_RIGHT
Constructor Detail |
public XPolygon()
public XPolygon(XPoint[] points)
points
- Punktlistepublic XPolygon(SimpleList L)
L
- Liste mit Punktdaten.XPolyline.set(gishur.x.XPoint[])
public XPolygon(XPolyline pol)
l
- Objekt, von dem Daten übernommen werdenpublic XPolygon(java.lang.String s)
s
- String mit PolygondatenMethod Detail |
public java.lang.Object clone()
clone
in class XPolyline
gishur.x.XPolyline
Object.clone()
public java.lang.String toString()
toString
in class XPolyline
Object.toString()
public boolean equals(java.lang.Object O)
equals
in class XPolyline
O
- Objekt, mit dem verglichen werden sollObject.equals(java.lang.Object)
public SimpleList getSegmentList()
getSegmentList
in class XPolyline
public SimpleList getSegmentList(byte orientation)
orientation
- Orientierung der Segmentlistepublic XLine line(int i)
line
in class XPolyline
i
- Index für die gewünschte Geradepublic XSegment segment(int i)
segment
in class XPolyline
i
- Indexpublic int countBorderSegments()
countBorderSegments
in class XPolyline
public XSegment borderSegment(int i)
borderSegment
in class XPolyline
i
- Index des gewünschten Randelementspublic int findBorderIndex(int pointindex, boolean start)
findBorderIndex
in class XPolyline
pointindex
- Index des Polygonpunktesstart
- falls true wird Randelement zurückgegeben, das mit pointindex
beginnt; falls false jenes, das mit pointindex endetpublic int liesOn(XPoint p)
liesOn
in class XPolyline
p
- zu suchender Punktpublic XPoint slidePoint(XPoint p, double dist)
p
- Ausgangspunktdist
- Entfernung auf dem Randpublic int closestSegment(XPoint p, int i1, int i2)
p
- Punkt, zu dem nächster Punkt auf dem Rand gesucht wirdi1,i2
- Segmentindizes für das Suchintervall (beide inklusive)public double circumference()
circumference
in class XPolyline
public byte orientation()
public void setOrientation(byte orientation)
orientation
- Orientierungskonstante für künftige Orientierungpublic boolean in(XPoint q)
p
- zu testender Punktlocate(gishur.x.XPoint)
public byte locate(XPoint q)
Vorbedingungen: Das Polygon muß einfach sein.
locate
in interface AreaIntersectable
p
- zu lokalisierender Punktpublic XPolygon vis(XPoint p)
p
- Sichtpunktpublic SimpleList skeleton()
Skeleton
public XPoint[] MIC()
Skeleton
public int scanFirstIntersectingSegment(int i1, int i2, XBaseline l)
i1,i2
- Indix des Start bzw. Zielsegmentesl
- auf Schnitt zu untersuchendes Linienobjektpublic boolean contains(double x, double y)
contains
in class XPolyline
x,y
- Koordinaten des Punktespublic boolean supportsIntersection(java.lang.Object O)
supportsIntersection
in class XPolyline
O
- zu schneidendes Objektpublic Intersection intersection(java.lang.Object O)
intersection
in class XPolyline
O
- zu schneidendes ObjektIntersectionException
- falls der Schnitt nicht
durchgeführt werden konnte.public boolean supportsIntersection(AreaIntersectable O, boolean is_convex)
supportsIntersection
in interface AreaIntersectable
O
- zu schneidendes Objektis_convex
- falls true, ist das Objekt O konvexpublic Area intersection(AreaIntersectable O, boolean is_convex)
intersection
in interface AreaIntersectable
O
- zu schneidendes Objektis_convex
- falls true, ist das Objekt O konvexIntersectionException
- falls der Schnitt nicht
durchgeführt werden konnte.public XPolygon convexPolygonIntersection(XPolygon polygon)
polygon
- zweites Polygonpublic SimpleList polygonIntersection(XPolygon pol)
poly
- zu schneidendes Polygon
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |