public class Polygon2D extends java.lang.Object implements Component2D
Loosely based on the algorithm described in http://www-ma2.upc.es/geoc/Schirra-pointPolygon.pdf.
Component2D.WithinRelation| Modifier and Type | Field and Description |
|---|---|
protected Component2D |
holes
tree of holes, or null
|
private double |
maxX
maximum longitude of this geometry's bounding box area
|
private double |
maxY
maximum latitude of this geometry's bounding box area
|
private double |
minX
minimum longitude of this geometry's bounding box area
|
private double |
minY
minimum latitude of this geometry's bounding box area
|
(package private) EdgeTree |
tree
Edges of the polygon represented as a 2-d interval tree.
|
| Modifier | Constructor and Description |
|---|---|
protected |
Polygon2D(double minX,
double maxX,
double minY,
double maxY,
double[] x,
double[] y,
Component2D holes) |
protected |
Polygon2D(Polygon polygon,
Component2D holes) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
contains(double x,
double y)
Returns true if the point is contained within this polygon.
|
static Component2D |
create(Polygon... polygons)
Builds a Polygon2D from multipolygon
|
double |
getMaxX()
max X value for the component
|
double |
getMaxY()
max Y value for the component
|
double |
getMinX()
min X value for the component
|
double |
getMinY()
min Y value for the component
|
private boolean |
internalContains(double x,
double y) |
private int |
numberOfCorners(double minX,
double maxX,
double minY,
double maxY) |
private int |
numberOfTriangleCorners(double ax,
double ay,
double bx,
double by,
double cx,
double cy) |
PointValues.Relation |
relate(double minX,
double maxX,
double minY,
double maxY)
relates this component2D with a bounding box
|
private PointValues.Relation |
relateIndexedLineSegment(double minX,
double maxX,
double minY,
double maxY,
double a2x,
double a2y,
double b2x,
double b2y)
relates an indexed line segment (a "flat triangle") with the polygon
|
private PointValues.Relation |
relateIndexedTriangle(double minX,
double maxX,
double minY,
double maxY,
double ax,
double ay,
double bx,
double by,
double cx,
double cy)
relates an indexed triangle with the polygon
|
PointValues.Relation |
relateTriangle(double minX,
double maxX,
double minY,
double maxY,
double ax,
double ay,
double bx,
double by,
double cx,
double cy)
relates this component2D with a triangle
|
Component2D.WithinRelation |
withinTriangle(double minX,
double maxX,
double minY,
double maxY,
double ax,
double ay,
boolean ab,
double bx,
double by,
boolean bc,
double cx,
double cy,
boolean ca)
Compute the within relation of this component2D with a triangle
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcontainsPoint, disjoint, pointInTriangle, relateTriangle, within, withinTriangleprivate final double minY
private final double maxY
private final double minX
private final double maxX
protected final Component2D holes
final EdgeTree tree
protected Polygon2D(double minX,
double maxX,
double minY,
double maxY,
double[] x,
double[] y,
Component2D holes)
protected Polygon2D(Polygon polygon, Component2D holes)
public double getMinX()
Component2DgetMinX in interface Component2Dpublic double getMaxX()
Component2DgetMaxX in interface Component2Dpublic double getMinY()
Component2DgetMinY in interface Component2Dpublic double getMaxY()
Component2DgetMaxY in interface Component2Dpublic boolean contains(double x,
double y)
See https://www.ecse.rpi.edu/~wrf/Research/Short_Notes/pnpoly.html for more information.
contains in interface Component2Dprivate boolean internalContains(double x,
double y)
public PointValues.Relation relate(double minX, double maxX, double minY, double maxY)
Component2Drelate in interface Component2Dpublic PointValues.Relation relateTriangle(double minX, double maxX, double minY, double maxY, double ax, double ay, double bx, double by, double cx, double cy)
Component2DrelateTriangle in interface Component2Dpublic Component2D.WithinRelation withinTriangle(double minX, double maxX, double minY, double maxY, double ax, double ay, boolean ab, double bx, double by, boolean bc, double cx, double cy, boolean ca)
Component2DwithinTriangle in interface Component2Dprivate PointValues.Relation relateIndexedLineSegment(double minX, double maxX, double minY, double maxY, double a2x, double a2y, double b2x, double b2y)
private PointValues.Relation relateIndexedTriangle(double minX, double maxX, double minY, double maxY, double ax, double ay, double bx, double by, double cx, double cy)
private int numberOfTriangleCorners(double ax,
double ay,
double bx,
double by,
double cx,
double cy)
private int numberOfCorners(double minX,
double maxX,
double minY,
double maxY)
public static Component2D create(Polygon... polygons)