HE_Mesh2014
2.0.11
|
Static Public Member Functions | |
static void | linkBoundary (final Tri_BPoint[] pts) |
static final double | projection (final WB_Coordinate p1, final WB_Coordinate p2, final WB_Coordinate p) |
static final WB_Coordinate | intersection (final WB_Coordinate a, final WB_Coordinate b, final WB_Coordinate c, final WB_Coordinate d) |
static final double | edgeDistanceSq (final WB_Coordinate p1, final WB_Coordinate p2, final WB_Coordinate p) |
Static Public Attributes | |
static final boolean | MESSAGES = false |
Protected Member Functions | |
void | fillQuadrilateral (final Tri_HalfEdge he1) |
FastTable< Tri_HalfEdge > | constructPolygon (final Tri_HalfEdge he) |
void | fillGeneralPolygon (final Tri_HalfEdge he) |
void | fillGeneralPolygon (final FastTable< Tri_HalfEdge > polygon) |
void | fillEdgeVisiblePolygon (final Tri_HalfEdge he) |
final void | updateHalfEdge (final Tri_HalfEdge he) |
final Tri_HalfEdge | findPrevious (final Tri_HalfEdge he) |
final String | error (final String s) |
final String | error (final String s, final Object...args) |
Protected Attributes | |
final List< Tri_Point > | points |
final List< Tri_HalfEdge > | halfEdges |
int | nBoundary |
LinkedList< Tri_HalfEdge > | delaunayQueue = new LinkedList<Tri_HalfEdge>() |
LinkedList< Tri_Point > | removedConstraints = new LinkedList<Tri_Point>() |
LinkedList< Tri_Point > | deleteQueue = new LinkedList<Tri_Point>() |
Static Protected Attributes | |
static final String | E_EXHAUSTED = "Exhausted halfedges or points!" |
static final String | E_MISSING = "Missing halfedge or point!" |
static final String | E_IDENTICAL = "Identical halfedges or points!" |
static final String | E_COINCIDENT = "Coincident points!" |
static final String | E_TYPE = "Incorrect type!" |
static final String | E_POLYGON = "Illegal polygonal region!" |
static final String | E_HALFEDGE = "Mismatched halfedge!" |
static final int | NULL_VALUE = -100000 |
Static Private Member Functions | |
static final double | projNorm (final WB_Coordinate a, final WB_Coordinate b, final WB_Coordinate c) |
static final double | perpDistSq (final WB_Coordinate a, final WB_Coordinate b, final WB_Coordinate c) |
Private Attributes | |
Tri_Point | removeConstraintPeg = null |
Represents a 2D triangulation using points (vertices) and halfedges. Triangulation is performed by an interactive constrained Delaunay algorithm. Point insertion uses Lawson's algorithm. Constraint insertion and removal, as well as vertex removal and relocation are supported.
For full details, see the "Interactive Constrained Delaunay Triangulation" section of:
Howison, M. CAD Tools for Creating Space-filling 3D Escher Tiles. Master�s thesis, U.C. Berkeley, Berkeley, CA, May 2009. (also Tech Report EECS-2009-56, http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-56.html)
Or contact the author: mark. howi son@g mail .com
wblut.geom.WB_ConstrainedTriangulation.WB_ConstrainedTriangulation | ( | ) |
Tri_Point wblut.geom.WB_ConstrainedTriangulation.addBoundaryPoint | ( | final Tri_Point | p, |
final Tri_HalfEdge | he0 | ||
) |
p | |
he0 |
boolean wblut.geom.WB_ConstrainedTriangulation.addConstraint | ( | final int | start, |
final int | end | ||
) |
start | |
end |
boolean wblut.geom.WB_ConstrainedTriangulation.addConstraint | ( | Tri_Point | pStart, |
final Tri_Point | pEnd | ||
) |
pStart | |
pEnd |
|
private |
he1 | |
he2 | |
he1prev | |
he2prev |
|
private |
he1 | |
he2 | |
he1prev | |
he2prev |
|
private |
origin | |
destination |
Tri_Point wblut.geom.WB_ConstrainedTriangulation.addInteriorPoint | ( | final WB_Coordinate | point | ) |
point |
final boolean wblut.geom.WB_ConstrainedTriangulation.between | ( | final WB_Coordinate | a, |
final WB_Coordinate | b, | ||
final WB_Coordinate | c | ||
) |
a | |
b | |
c |
final boolean wblut.geom.WB_ConstrainedTriangulation.betweenProper | ( | final WB_Coordinate | a, |
final WB_Coordinate | b, | ||
final WB_Coordinate | c | ||
) |
a | |
b | |
c |
int wblut.geom.WB_ConstrainedTriangulation.boundarySize | ( | ) |
void wblut.geom.WB_ConstrainedTriangulation.clear | ( | ) |
void wblut.geom.WB_ConstrainedTriangulation.clearFlags | ( | final int | flag | ) |
flag |
|
private |
pStart | |
pEnd |
final boolean wblut.geom.WB_ConstrainedTriangulation.coincident | ( | final WB_Coordinate | a, |
final WB_Coordinate | b | ||
) |
a | |
b |
void wblut.geom.WB_ConstrainedTriangulation.constrainAllEdges | ( | ) |
|
private |
he |
|
protected |
he |
boolean wblut.geom.WB_ConstrainedTriangulation.contains | ( | final Tri_Point | p | ) |
p |
|
static |
p1 | |
p2 | |
p |
|
protected |
s |
|
protected |
s | |
args |
|
protected |
he |
|
private |
polygon |
|
protected |
he |
|
protected |
polygon |
|
private |
polygon |
|
protected |
he1 |
Tri_FaceWalk wblut.geom.WB_ConstrainedTriangulation.findFace | ( | final Tri_HalfEdge | heStart, |
final Tri_Point | p | ||
) |
A slightly smarter face walk routine that resorts to brute force only when it gets confused by an concave boundary.
heStart | |
p |
Tri_FaceWalk wblut.geom.WB_ConstrainedTriangulation.findFaceBruteForce | ( | final Tri_HalfEdge | heStart, |
final Tri_Point | p | ||
) |
heStart | |
p |
This brute force approach works for *any* non-intersecting boundary, concave or convex. If the boundary is guaranteed to be a convex, a smarter face-walking algorithm could be used.
|
protected |
he |
|
private |
he |
|
private |
bounds |
WB_Triangle [] wblut.geom.WB_ConstrainedTriangulation.getExplicitTriangles | ( | ) |
List<WB_Triangle> wblut.geom.WB_ConstrainedTriangulation.getExplicitTrianglesAsList | ( | ) |
WB_Coordinate [] wblut.geom.WB_ConstrainedTriangulation.getFaceCoordinates | ( | ) |
Tri_Point wblut.geom.WB_ConstrainedTriangulation.getPoint | ( | final int | i | ) |
i |
WB_Coordinate [] wblut.geom.WB_ConstrainedTriangulation.getPoints | ( | ) |
int wblut.geom.WB_ConstrainedTriangulation.indexOf | ( | final Tri_Point | p | ) |
p |
void wblut.geom.WB_ConstrainedTriangulation.initRemoveConstraints | ( | final Tri_Point | p | ) |
p |
final boolean wblut.geom.WB_ConstrainedTriangulation.intersect | ( | final WB_Coordinate | a, |
final WB_Coordinate | b, | ||
final WB_Coordinate | c, | ||
final WB_Coordinate | d | ||
) |
a | |
b | |
c | |
d |
|
static |
a | |
b | |
c | |
d |
final boolean wblut.geom.WB_ConstrainedTriangulation.intersectProper | ( | final WB_Coordinate | a, |
final WB_Coordinate | b, | ||
final WB_Coordinate | c, | ||
final WB_Coordinate | d | ||
) |
a | |
b | |
c | |
d |
|
static |
pts |
final void wblut.geom.WB_ConstrainedTriangulation.listHalfEdges | ( | ) |
void wblut.geom.WB_ConstrainedTriangulation.listPoints | ( | ) |
final void wblut.geom.WB_ConstrainedTriangulation.message | ( | final String | s | ) |
s |
final void wblut.geom.WB_ConstrainedTriangulation.message | ( | final String | s, |
final Object... | args | ||
) |
s | |
args |
|
staticprivate |
a | |
b | |
c |
|
static |
p1 | |
p2 | |
p |
|
staticprivate |
a | |
b | |
c |
void wblut.geom.WB_ConstrainedTriangulation.removeBoundaryPoint | ( | final Tri_BPoint | bp | ) |
bp |
|
private |
p | |
pPrev |
|
private |
he |
void wblut.geom.WB_ConstrainedTriangulation.removeInteriorPoint | ( | final Tri_Point | p | ) |
p |
|
private |
p |
void wblut.geom.WB_ConstrainedTriangulation.restoreConstraints | ( | final Tri_Point | p | ) |
p |
int wblut.geom.WB_ConstrainedTriangulation.size | ( | ) |
|
private |
he | |
p |
|
private |
p | |
he |
|
private |
p | |
he1 |
void wblut.geom.WB_ConstrainedTriangulation.startWithBoundary | ( | final WB_Coordinate[] | pts | ) |
pts |
void wblut.geom.WB_ConstrainedTriangulation.startWithBoundary | ( | final WB_Coordinate[] | pts, |
final boolean | reverse | ||
) |
pts | |
reverse |
void wblut.geom.WB_ConstrainedTriangulation.translate | ( | final double | x, |
final double | y | ||
) |
x | |
y |
boolean wblut.geom.WB_ConstrainedTriangulation.updateBoundaryPointInside | ( | final Tri_Point | p, |
final Tri_Point | pPrev, | ||
Tri_Point | pTemp | ||
) |
p | |
pPrev | |
pTemp |
void wblut.geom.WB_ConstrainedTriangulation.updateBoundaryPointOutside | ( | final Tri_Point | p | ) |
p |
void wblut.geom.WB_ConstrainedTriangulation.updateDelaunay | ( | ) |
void wblut.geom.WB_ConstrainedTriangulation.updateDelaunayAll | ( | ) |
|
protected |
void wblut.geom.WB_ConstrainedTriangulation.updateInteriorPoint | ( | Tri_Point | p | ) |
p |
|
protected |
|
protected |
|
staticprotected |
|
staticprotected |
|
staticprotected |
|
staticprotected |
|
staticprotected |
|
staticprotected |
|
staticprotected |
|
protected |
|
static |
|
protected |
|
staticprotected |
|
protected |
|
private |
|
protected |