Package | Description |
---|---|
org.apache.lucene.geo |
Geospatial Utility Implementations for Lucene Core
|
Modifier and Type | Field and Description |
---|---|
private Tessellator.Node |
Tessellator.Node.next |
private Tessellator.Node |
Tessellator.Node.nextZ |
private Tessellator.Node |
Tessellator.Node.previous |
private Tessellator.Node |
Tessellator.Node.previousZ |
(package private) Tessellator.Node[] |
Tessellator.Triangle.vertex |
Modifier and Type | Method and Description |
---|---|
private static Tessellator.Node |
Tessellator.createDoublyLinkedList(Polygon polygon,
int startIndex,
GeoUtils.WindingOrder windingOrder)
Creates a circular doubly linked list using polygon points.
|
private static Tessellator.Node |
Tessellator.cureLocalIntersections(Tessellator.Node startNode,
java.util.List<Tessellator.Triangle> tessellation)
Iterate through all polygon nodes and remove small local self-intersections
|
private static Tessellator.Node |
Tessellator.eliminateHoles(Polygon polygon,
Tessellator.Node outerNode)
Links every hole into the outer loop, producing a single-ring polygon without holes.
|
private static Tessellator.Node |
Tessellator.fetchHoleBridge(Tessellator.Node holeNode,
Tessellator.Node outerNode)
David Eberly's algorithm for finding a bridge between a hole and outer polygon
see: http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf
|
private static Tessellator.Node |
Tessellator.fetchLeftmost(Tessellator.Node start)
Finds the left-most hole of a polygon ring.
|
private static Tessellator.Node |
Tessellator.filterPoints(Tessellator.Node start,
Tessellator.Node end)
Eliminate colinear/duplicate points from the doubly linked list
|
private static Tessellator.Node |
Tessellator.insertNode(Polygon polygon,
int index,
int vertexIndex,
Tessellator.Node lastNode)
Creates a node and optionally links it with a previous node in a circular doubly-linked list
|
private static Tessellator.Node |
Tessellator.splitPolygon(Tessellator.Node a,
Tessellator.Node b)
Links two polygon vertices using a bridge.
|
Modifier and Type | Method and Description |
---|---|
private static Tessellator.Node |
Tessellator.cureLocalIntersections(Tessellator.Node startNode,
java.util.List<Tessellator.Triangle> tessellation)
Iterate through all polygon nodes and remove small local self-intersections
|
private static java.util.List<Tessellator.Triangle> |
Tessellator.earcutLinkedList(Tessellator.Node currEar,
java.util.List<Tessellator.Triangle> tessellation,
Tessellator.State state,
boolean mortonOptimized)
Main ear slicing loop which triangulates the vertices of a polygon, provided as a doubly-linked list.
|
private static void |
Tessellator.eliminateHole(Tessellator.Node holeNode,
Tessellator.Node outerNode)
Finds a bridge between vertices that connects a hole with an outer ring, and links it
|
private static Tessellator.Node |
Tessellator.eliminateHoles(Polygon polygon,
Tessellator.Node outerNode)
Links every hole into the outer loop, producing a single-ring polygon without holes.
|
private static Tessellator.Node |
Tessellator.fetchHoleBridge(Tessellator.Node holeNode,
Tessellator.Node outerNode)
David Eberly's algorithm for finding a bridge between a hole and outer polygon
see: http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf
|
private static Tessellator.Node |
Tessellator.fetchLeftmost(Tessellator.Node start)
Finds the left-most hole of a polygon ring.
|
private static Tessellator.Node |
Tessellator.filterPoints(Tessellator.Node start,
Tessellator.Node end)
Eliminate colinear/duplicate points from the doubly linked list
|
private static Tessellator.Node |
Tessellator.insertNode(Polygon polygon,
int index,
int vertexIndex,
Tessellator.Node lastNode)
Creates a node and optionally links it with a previous node in a circular doubly-linked list
|
private static boolean |
Tessellator.isEar(Tessellator.Node ear,
boolean mortonOptimized)
Determines whether a polygon node forms a valid ear with adjacent nodes.
|
private static boolean |
Tessellator.isIntersectingPolygon(Tessellator.Node start,
double x0,
double y0,
double x1,
double y1)
Determines if the diagonal of a polygon is intersecting with any polygon elements.
|
private static boolean |
Tessellator.isLocallyInside(Tessellator.Node a,
Tessellator.Node b) |
private static boolean |
Tessellator.isValidDiagonal(Tessellator.Node a,
Tessellator.Node b)
Determines whether a diagonal between two polygon nodes lies within a polygon interior.
|
private static boolean |
Tessellator.isVertexEquals(Tessellator.Node a,
double x,
double y)
Determines if two point vertices are equal.
|
private static boolean |
Tessellator.isVertexEquals(Tessellator.Node a,
Tessellator.Node b)
Determines if two point vertices are equal.
|
private static boolean |
Tessellator.middleInsert(Tessellator.Node start,
double x0,
double y0,
double x1,
double y1)
Determine whether the middle point of a polygon diagonal is contained within the polygon
|
private static boolean |
Tessellator.mortonIsEar(Tessellator.Node ear)
Uses morton code for speed to determine whether or a polygon node forms a valid ear w/ adjacent nodes
|
private static void |
Tessellator.removeNode(Tessellator.Node node)
Removes a node from the doubly linked list
|
private static void |
Tessellator.sortByMorton(Tessellator.Node start)
Interlinks polygon nodes in Z-Order.
|
private static void |
Tessellator.sortByMortonWithReset(Tessellator.Node start)
Interlinks polygon nodes in Z-Order.
|
private static boolean |
Tessellator.splitEarcut(Tessellator.Node start,
java.util.List<Tessellator.Triangle> tessellation,
boolean mortonIndexed)
Attempt to split a polygon and independently triangulate each side.
|
private static Tessellator.Node |
Tessellator.splitPolygon(Tessellator.Node a,
Tessellator.Node b)
Links two polygon vertices using a bridge.
|
private static void |
Tessellator.tathamSort(Tessellator.Node list)
Simon Tatham's doubly-linked list O(n log n) mergesort
see: http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html
|
Constructor and Description |
---|
Node(Tessellator.Node other)
simple deep copy constructor
|
Triangle(Tessellator.Node a,
Tessellator.Node b,
Tessellator.Node c) |