public class EdgeTree
extends java.lang.Object
low
, which is the minimum latitude of the edge.
max
stores the maximum latitude of this edge or any children.Modifier and Type | Field and Description |
---|---|
private static byte |
FALSE
helper bytes to signal if a point is on an edge, it is within the edge tree or disjoint
|
(package private) EdgeTree |
left
left child edge, or null
|
(package private) double |
low
min of this edge
|
(package private) double |
max
max latitude of this edge or any children
|
private static byte |
ON_EDGE |
(package private) EdgeTree |
right
right child edge, or null
|
private static byte |
TRUE |
(package private) double |
x1 |
(package private) double |
x2 |
(package private) double |
y1 |
(package private) double |
y2 |
Constructor and Description |
---|
EdgeTree(double x1,
double y1,
double x2,
double y2,
double low,
double max) |
Modifier and Type | Method and Description |
---|---|
protected boolean |
contains(double x,
double y)
Returns true if the point is on an edge or crosses the edge subtree an odd number
of times.
|
private byte |
containsPnPoly(double x,
double y)
Returns byte 0x00 if the point crosses this edge subtree an even number of times.
|
protected static EdgeTree |
createTree(double[] x,
double[] y)
Creates an edge interval tree from a set of geometry vertices.
|
private static EdgeTree |
createTree(EdgeTree[] edges,
int low,
int high)
Creates tree from sorted edges (with range low and high inclusive)
|
protected boolean |
crossesBox(double minX,
double maxX,
double minY,
double maxY,
boolean includeBoundary)
Returns true if the box crosses any edge in this edge subtree
|
protected boolean |
crossesLine(double minX,
double maxX,
double minY,
double maxY,
double a2x,
double a2y,
double b2x,
double b2y)
Returns true if the line crosses any edge in this edge subtree
|
protected boolean |
crossesTriangle(double minX,
double maxX,
double minY,
double maxY,
double ax,
double ay,
double bx,
double by,
double cx,
double cy,
boolean includeBoundary)
Returns true if the triangle crosses any edge in this edge subtree
|
protected boolean |
isPointOnLine(double x,
double y)
returns true if the provided x, y point lies on the line
|
final double y1
final double y2
final double x1
final double x2
final double low
double max
EdgeTree left
EdgeTree right
private static final byte FALSE
private static final byte TRUE
private static final byte ON_EDGE
EdgeTree(double x1, double y1, double x2, double y2, double low, double max)
protected boolean contains(double x, double y)
private byte containsPnPoly(double x, double y)
See https://www.ecse.rpi.edu/~wrf/Research/Short_Notes/pnpoly.html for more information.
protected boolean isPointOnLine(double x, double y)
protected boolean crossesTriangle(double minX, double maxX, double minY, double maxY, double ax, double ay, double bx, double by, double cx, double cy, boolean includeBoundary)
protected boolean crossesBox(double minX, double maxX, double minY, double maxY, boolean includeBoundary)
protected boolean crossesLine(double minX, double maxX, double minY, double maxY, double a2x, double a2y, double b2x, double b2y)
protected static EdgeTree createTree(double[] x, double[] y)