HE_Mesh  5.1.2
wblut.geom.WB_Earcut Class Reference

Classes

class  Collinear
 
class  EarcutException
 
enum  EEarcutState
 
class  Node
 

Static Public Member Functions

static final int[] triangulate2D (final WB_Polygon polygon)
 
static final long[] triangulate2Dkeys (final HE_Face face)
 
static final int[] triangulate2Dindices (final HE_Face face)
 

Private Member Functions

 WB_Earcut ()
 

Static Private Member Functions

static final int[] earcut (final WB_IndexedPoint[][] pPoints, final boolean pIsClockwise)
 
static final Node onEliminateHoles (final WB_IndexedPoint[][] pPoints, Node lOuterNode, final boolean pIsZIndexed, final Deque< Collinear > collinears)
 
static final void onEliminateHole (final Node pHoleNode, Node pOuterNode, final boolean pIsZIndexed, final Deque< Collinear > collinears)
 
static final Node onEberlyFetchHoleBridge (final Node pHoleNode, final Node pOuterNode)
 
static final Node onFetchLeftmost (final Node pStart)
 
static final List< int[]> onEarcutLinkedList (Node lCurrentEar, final List< int[]> pTriangleList, final double pMinimumX, final double pMinimumY, final double pSize, final EEarcutState pEarcutState, final boolean pIsZIndexed, final Deque< Collinear > collinears)
 
static final boolean isEar (final Node pEar, final double pMinimumX, final double pMinimumY, final double pSize, final boolean pIsZIndexed)
 
static final Node onCureLocalIntersections (Node pStartNode, final List< int[]> pTriangleList)
 
static final void onSplitEarcut (final Node pStart, final List< int[]> pTriangleList, final double pMinimumX, final double pMinimumY, final double pSize, final boolean pIsZIndexed, final Deque< Collinear > collinears)
 
static final Node onSplitPolygon (final Node pNodeA, final Node pNodeB)
 
static final boolean isValidDiagonal (final Node pNodeA, final Node pNodeB)
 
static final boolean isLocallyInside (final Node pNodeA, final Node pNodeB)
 
static final boolean onMiddleInsert (final Node pPolygonStart, final double pX0, final double pY0, final double pX1, final double pY1)
 
static final boolean isIntersectingPolygon (final Node pStartNode, final double pX0, final double pY0, final double pX1, final double pY1)
 
static final boolean isIntersecting (final double pX0, final double pY0, final double pX1, final double pY1, final double pX2, final double pY2, final double pX3, final double pY3)
 
static final void onZIndexCurve (final Node pStartNode, final double pMinimumX, final double pMinimumY, final double pSize)
 
static final Node onTathamZSortList (Node pList)
 
static final int onCalculateZOrder (final double pX, final double pY, final double pMinimumX, final double pMinimumY, final double pSize)
 
static final Node onCreateDoublyLinkedList (final WB_IndexedPoint[] pPoints, final boolean pIsClockwise)
 
static final Node onFilterPoints (final Node pStartNode, Node pEndNode, final boolean pIsZIndexed, final Deque< Collinear > collinears)
 
static final Node onInsertNode (final WB_IndexedPoint p, final Node pLastNode)
 
static final boolean isVertexEquals (final double pX0, final double pY0, final double pX1, final double pY1)
 
static final WB_Classification onCalculateWindingOrder (final double pX0, final double pY0, final double pX1, final double pY1, final double pX2, final double pY2)
 
static List< int[]> reinsertCollinearPoints (final List< int[]> triangles, final Deque< Collinear > collinears)
 
static int triangleContainsEdge (final int[] triangle, final Collinear edge)
 

Static Private Attributes

static final Comparator< Node > COMPARATOR_SORT_BY_X
 
static final int CONTRACT_HOLES_INDEX = 1
 
static final int DEFAULT_THRESHOLD_SIMPLICITY = 80
 
static final int DEFAULT_COORDINATE_RANGE = 1000
 

Constructor & Destructor Documentation

wblut.geom.WB_Earcut.WB_Earcut ( )
private

Member Function Documentation

static final int [] wblut.geom.WB_Earcut.earcut ( final WB_IndexedPoint  pPoints[][],
final boolean  pIsClockwise 
)
staticprivate
static final boolean wblut.geom.WB_Earcut.isEar ( final Node  pEar,
final double  pMinimumX,
final double  pMinimumY,
final double  pSize,
final boolean  pIsZIndexed 
)
staticprivate

Determines whether a polygon node forms a valid ear with adjacent nodes.

static final boolean wblut.geom.WB_Earcut.isIntersecting ( final double  pX0,
final double  pY0,
final double  pX1,
final double  pY1,
final double  pX2,
final double  pY2,
final double  pX3,
final double  pY3 
)
staticprivate

Determines whether two segments intersect.

static final boolean wblut.geom.WB_Earcut.isIntersectingPolygon ( final Node  pStartNode,
final double  pX0,
final double  pY0,
final double  pX1,
final double  pY1 
)
staticprivate

Determines if the diagonal of a polygon is intersecting with any polygon elements.

static final boolean wblut.geom.WB_Earcut.isLocallyInside ( final Node  pNodeA,
final Node  pNodeB 
)
staticprivate

Determines whether a polygon diagonal rests locally within a polygon.

static final boolean wblut.geom.WB_Earcut.isValidDiagonal ( final Node  pNodeA,
final Node  pNodeB 
)
staticprivate

Determines whether a diagonal between two polygon nodes lies within a polygon interior. (This determines the validity of the ray.)

static final boolean wblut.geom.WB_Earcut.isVertexEquals ( final double  pX0,
final double  pY0,
final double  pX1,
final double  pY1 
)
staticprivate

Determines if two point vertices are equal.

static final WB_Classification wblut.geom.WB_Earcut.onCalculateWindingOrder ( final double  pX0,
final double  pY0,
final double  pX1,
final double  pY1,
final double  pX2,
final double  pY2 
)
staticprivate

Calculates the WindingOrder for a set of vertices.

static final int wblut.geom.WB_Earcut.onCalculateZOrder ( final double  pX,
final double  pY,
final double  pMinimumX,
final double  pMinimumY,
final double  pSize 
)
staticprivate

Calculates the Z-Order of a given point given the vertex co-ordinates and size of the bounding box.

static final Node wblut.geom.WB_Earcut.onCreateDoublyLinkedList ( final WB_IndexedPoint[]  pPoints,
final boolean  pIsClockwise 
)
staticprivate

Creates a circular doubly linked list using polygon points. The order is governed by the specified winding order.

static final Node wblut.geom.WB_Earcut.onCureLocalIntersections ( Node  pStartNode,
final List< int[]>  pTriangleList 
)
staticprivate

Iterates through all polygon nodes and cures small local self-intersections.

static final List<int[]> wblut.geom.WB_Earcut.onEarcutLinkedList ( Node  lCurrentEar,
final List< int[]>  pTriangleList,
final double  pMinimumX,
final double  pMinimumY,
final double  pSize,
final EEarcutState  pEarcutState,
final boolean  pIsZIndexed,
final Deque< Collinear >  collinears 
)
staticprivate

Main ear slicing loop which triangulates the vertices of a polygon, provided as a doubly-linked list.

static final Node wblut.geom.WB_Earcut.onEberlyFetchHoleBridge ( final Node  pHoleNode,
final Node  pOuterNode 
)
staticprivate

David Eberly's algorithm for finding a bridge between a hole and outer polygon.

static final void wblut.geom.WB_Earcut.onEliminateHole ( final Node  pHoleNode,
Node  pOuterNode,
final boolean  pIsZIndexed,
final Deque< Collinear >  collinears 
)
staticprivate

Finds a bridge between vertices that connects a hole with an outer ring, and links it.

static final Node wblut.geom.WB_Earcut.onEliminateHoles ( final WB_IndexedPoint  pPoints[][],
Node  lOuterNode,
final boolean  pIsZIndexed,
final Deque< Collinear >  collinears 
)
staticprivate

Links every hole into the outer loop, producing a single-ring polygon without holes.

static final Node wblut.geom.WB_Earcut.onFetchLeftmost ( final Node  pStart)
staticprivate

Finds the left-most hole of a polygon ring.

static final Node wblut.geom.WB_Earcut.onFilterPoints ( final Node  pStartNode,
Node  pEndNode,
final boolean  pIsZIndexed,
final Deque< Collinear >  collinears 
)
staticprivate

Eliminates colinear/duplicate points.

static final Node wblut.geom.WB_Earcut.onInsertNode ( final WB_IndexedPoint  p,
final Node  pLastNode 
)
staticprivate

Creates a node and optionally links it with a previous node in a circular doubly-linked list.

static final boolean wblut.geom.WB_Earcut.onMiddleInsert ( final Node  pPolygonStart,
final double  pX0,
final double  pY0,
final double  pX1,
final double  pY1 
)
staticprivate

Determines whether the middle point of a polygon diagonal is contained within the polygon.

static final void wblut.geom.WB_Earcut.onSplitEarcut ( final Node  pStart,
final List< int[]>  pTriangleList,
final double  pMinimumX,
final double  pMinimumY,
final double  pSize,
final boolean  pIsZIndexed,
final Deque< Collinear >  collinears 
)
staticprivate

Tries to split a polygon and triangulate each side independently.

static final Node wblut.geom.WB_Earcut.onSplitPolygon ( final Node  pNodeA,
final Node  pNodeB 
)
staticprivate

Links two polygon vertices using a bridge.

static final Node wblut.geom.WB_Earcut.onTathamZSortList ( Node  pList)
staticprivate

Simon Tatham's doubly-linked list merge/sort algorithm. (http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html)

static final void wblut.geom.WB_Earcut.onZIndexCurve ( final Node  pStartNode,
final double  pMinimumX,
final double  pMinimumY,
final double  pSize 
)
staticprivate

Interlinks polygon nodes in Z-Order.

static List<int[]> wblut.geom.WB_Earcut.reinsertCollinearPoints ( final List< int[]>  triangles,
final Deque< Collinear >  collinears 
)
staticprivate
static int wblut.geom.WB_Earcut.triangleContainsEdge ( final int[]  triangle,
final Collinear  edge 
)
staticprivate
static final int [] wblut.geom.WB_Earcut.triangulate2D ( final WB_Polygon  polygon)
static
static final int [] wblut.geom.WB_Earcut.triangulate2Dindices ( final HE_Face  face)
static
static final long [] wblut.geom.WB_Earcut.triangulate2Dkeys ( final HE_Face  face)
static

Member Data Documentation

final Comparator<Node> wblut.geom.WB_Earcut.COMPARATOR_SORT_BY_X
staticprivate
Initial value:
= new Comparator<Node>() {
@Override
public int compare(final Node pNodeA, final Node pNodeB) {
return pNodeA.xd() < pNodeB.xd() ? -1 : pNodeA.xd() == pNodeB.xd() ? 0 : 1;
}
}
final int wblut.geom.WB_Earcut.CONTRACT_HOLES_INDEX = 1
staticprivate
final int wblut.geom.WB_Earcut.DEFAULT_COORDINATE_RANGE = 1000
staticprivate
final int wblut.geom.WB_Earcut.DEFAULT_THRESHOLD_SIMPLICITY = 80
staticprivate

The documentation for this class was generated from the following file: