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, wait
containsPoint, disjoint, pointInTriangle, relateTriangle, within, withinTriangle
private 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()
Component2D
getMinX
in interface Component2D
public double getMaxX()
Component2D
getMaxX
in interface Component2D
public double getMinY()
Component2D
getMinY
in interface Component2D
public double getMaxY()
Component2D
getMaxY
in interface Component2D
public boolean contains(double x, double y)
See https://www.ecse.rpi.edu/~wrf/Research/Short_Notes/pnpoly.html for more information.
contains
in interface Component2D
private boolean internalContains(double x, double y)
public PointValues.Relation relate(double minX, double maxX, double minY, double maxY)
Component2D
relate
in interface Component2D
public PointValues.Relation relateTriangle(double minX, double maxX, double minY, double maxY, double ax, double ay, double bx, double by, double cx, double cy)
Component2D
relateTriangle
in interface Component2D
public 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)
Component2D
withinTriangle
in interface Component2D
private 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)