java.lang.Object
de.lmu.ifi.dbs.elki.data.spatial.Polygon
- All Implemented Interfaces:
SpatialComparable
Class representing a simple polygon. While you can obviously store non-simple
polygons in this, note that many of the supplied methods will assume that the
polygons are simple.
- Author:
- Erich Schubert
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Append the polygon to the buffer.boolean
Point in polygon test, based on http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html by W.get
(int idx) Get a vector by index.int
Returns the dimensionality of the object.double
getMax
(int dimension) Returns the maximum coordinate at the specified dimension.double
getMin
(int dimension) Returns the minimum coordinate at the specified dimension.boolean
intersects2DIncomplete
(Polygon other) Simple polygon intersection test.iter()
Get an iterator to the vector contents.int
size()
Get the polygon length.int
Test polygon orientation.toString()
-
Constructor Details
-
Polygon
Constructor.- Parameters:
points
- Polygon points
-
Polygon
-
-
Method Details
-
iter
Get an iterator to the vector contents.- Returns:
- Iterator
-
appendToBuffer
Append the polygon to the buffer.- Parameters:
buf
- Buffer to append to
-
toString
-
size
public int size()Get the polygon length.- Returns:
- Polygon length
-
get
Get a vector by index.- Parameters:
idx
- Index to get- Returns:
- Vector
-
getDimensionality
public int getDimensionality()Description copied from interface:SpatialComparable
Returns the dimensionality of the object.- Specified by:
getDimensionality
in interfaceSpatialComparable
- Returns:
- the dimensionality
-
getMin
public double getMin(int dimension) Description copied from interface:SpatialComparable
Returns the minimum coordinate at the specified dimension.- Specified by:
getMin
in interfaceSpatialComparable
- Parameters:
dimension
- the dimension for which the coordinate should be returned, where 0 ≤ dimension <getDimensionality()
- Returns:
- the minimum coordinate at the specified dimension
-
getMax
public double getMax(int dimension) Description copied from interface:SpatialComparable
Returns the maximum coordinate at the specified dimension.- Specified by:
getMax
in interfaceSpatialComparable
- Parameters:
dimension
- the dimension for which the coordinate should be returned, where 0 ≤ dimension <getDimensionality()
- Returns:
- the maximum coordinate at the specified dimension
-
testClockwise
public int testClockwise()Test polygon orientation.- Returns:
- -1, 0, 1 for counterclockwise, undefined and clockwise.
-
intersects2DIncomplete
Simple polygon intersection test.FIXME: while this is found on some web pages as "solution" and satisfies or needs, it clearly is not correct; not even for convex polygons: Consider a cross where the two bars are made out of four vertices each. No vertex is inside the other polygon, yet they intersect. I knew this before writing this code, but this O(n) code was the simplest thing to come up with, and it would work for our current data sets. A way to fix this is to augment it with the obvious O(n*n) segment intersection test. (Note that you will still need to test for point containment, since the whole polygon could be contained in the other!)
- Parameters:
other
- Other polygon- Returns:
- True when the polygons intersect
-
containsPoint2D
Point in polygon test, based on http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html by W. Randolph Franklin- Parameters:
v
- Point to test- Returns:
- True when contained.
-