
public class Polygon extends Object implements Iterable<Vector>, SpatialComparable
| Modifier and Type | Field and Description |
|---|---|
private double[] |
max
Maximum values
|
private double[] |
min
Minimum values
|
private List<Vector> |
points
The actual points
|
| Constructor and Description |
|---|
Polygon(List<Vector> points)
Constructor.
|
Polygon(List<Vector> points,
double minx,
double maxx,
double miny,
double maxy) |
| Modifier and Type | Method and Description |
|---|---|
void |
appendToBuffer(StringBuilder buf)
Append the polygon to the buffer.
|
boolean |
containsPoint2D(Vector v)
Point in polygon test, based on
http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
by W.
|
ListIterator<Vector> |
descendingIterator()
Return an iterator that iterates the list backwards.
|
Vector |
get(int idx)
Get a vector by index.
|
int |
getDimensionality()
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.
|
Iterator<Vector> |
iterator() |
ListIterator<Vector> |
listIterator()
Get a list iterator.
|
int |
size()
Get the polygon length.
|
int |
testClockwise()
Test polygon orientation.
|
String |
toString() |
public ListIterator<Vector> listIterator()
public ListIterator<Vector> descendingIterator()
public void appendToBuffer(StringBuilder buf)
buf - Buffer to append topublic int size()
public Vector get(int idx)
idx - Index to getpublic int getDimensionality()
SpatialComparablegetDimensionality in interface SpatialComparablepublic double getMin(int dimension)
SpatialComparablegetMin in interface SpatialComparabledimension - the dimension for which the coordinate should be returned,
where 0 ≤ dimension < getDimensionality()public double getMax(int dimension)
SpatialComparablegetMax in interface SpatialComparabledimension - the dimension for which the coordinate should be returned,
where 0 ≤ dimension < getDimensionality()public int testClockwise()
public boolean intersects2DIncomplete(Polygon other)
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!)
other - Other polygonpublic boolean containsPoint2D(Vector v)
v - Point to test