Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.vividsolutions.jts.triangulate
Class ConformingDelaunayTriangulator

    java.lang.Object
      com.vividsolutions.jts.triangulate.ConformingDelaunayTriangulator

public class ConformingDelaunayTriangulator
extends java.lang.Object

Computes a Conforming Delaunay Triangulation over a set of sites and a set of linear constraints.

A conforming Delaunay triangulation is a true Delaunay triangulation. In it each constraint segment is present as a union of one or more triangulation edges. Constraint segments may be subdivided into two or more triangulation edges by the insertion of additional sites. The additional sites are called Steiner points, and are necessary to allow the segments to be faithfully reflected in the triangulation while maintaining the Delaunay property. Another way of stating this is that in a conforming Delaunay triangulation every constraint segment will be the union of a subset of the triangulation edges (up to tolerance).

A Conforming Delaunay triangulation is distinct from a Constrained Delaunay triangulation. A Constrained Delaunay triangulation is not necessarily fully Delaunay, and it contains the constraint segments exactly as edges of the triangulation.

A typical usage pattern for the triangulator is:

     	 ConformingDelaunayTriangulator cdt = new ConformingDelaunayTriangulator(sites, tolerance);

       // optional
       cdt.setSplitPointFinder(splitPointFinder);
       cdt.setVertexFactory(vertexFactory);

    	 cdt.setConstraints(segments, new ArrayList(vertexMap.values()));
    	 cdt.formInitialDelaunay();
    	 cdt.enforceConstraints();
    	 subdiv = cdt.getSubdivision();

Author:
  David Skea, Martin Davis

Constructor Summary
`ConformingDelaunayTriangulator(java.util.Collection initialVertices, double tolerance)` Creates a Conforming Delaunay Triangulation based on the given unconstrained initial vertices.

Method Summary
`void` | `enforceConstraints()` Enforces the supplied constraints into the triangulation.
`void` | `formInitialDelaunay()` Computes the Delaunay triangulation of the initial sites.
`java.util.Collection` | `getConstraintSegments()` Gets the `Segment`s which represent the constraints.
`Geometry` | `getConvexHull()` Gets the convex hull of all the sites in the triangulation, including constraint vertices.
`java.util.List` | `getInitialVertices()` Gets the sites (vertices) used to initialize the triangulation.
`KdTree` | `getKDT()` Gets the `KdTree` which contains the vertices of the triangulation.
`QuadEdgeSubdivision` | `getSubdivision()` Gets the `QuadEdgeSubdivision` which represents the triangulation.
`double` | `getTolerance()` Gets the tolerance value used to construct the triangulation.
`ConstraintVertexFactory` | `getVertexFactory()` Gets the `ConstraintVertexFactory` used to create new constraint vertices at split points.
`void` | `insertSite(Coordinate p)` Inserts a site into the triangulation, maintaining the conformal Delaunay property.
`void` | `setConstraints(java.util.List segments, java.util.List segVertices)` Sets the constraints to be conformed to by the computed triangulation.
`void` | `setSplitPointFinder(ConstraintSplitPointFinder splitFinder)` Sets the `ConstraintSplitPointFinder` to be used during constraint enforcement.
`void` | `setVertexFactory(ConstraintVertexFactory vertexFactory)` Sets a custom `ConstraintVertexFactory` to be used to allow vertices carrying extra information to be created.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### ConformingDelaunayTriangulator

    public ConformingDelaunayTriangulator(java.util.Collection initialVertices,
                                          double tolerance)

  Creates a Conforming Delaunay Triangulation based on the given unconstrained initial vertices. The initial vertex set should not contain any vertices which appear in the constraint set.

Parameters:
  `initialVertices` - a collection of `ConstraintVertex`
  `tolerance` - the distance tolerance below which points are considered identical

Method Detail

### setConstraints

    public void setConstraints(java.util.List segments,
                               java.util.List segVertices)

  Sets the constraints to be conformed to by the computed triangulation. The unique set of vertices (as `ConstraintVertex`es) forming the constraints must also be supplied. Supplying it explicitly allows the ConstraintVertexes to be initialized appropriately(e.g. with external data), and avoids re-computing the unique set if it is already available.

  Parameters:
    `segments` - a list of the constraint `Segment`s
    `segVertices` - the set of unique `ConstraintVertex`es referenced by the segments

### setSplitPointFinder

    public void setSplitPointFinder(ConstraintSplitPointFinder splitFinder)

  Sets the `ConstraintSplitPointFinder` to be used during constraint enforcement. Different splitting strategies may be appropriate for special situations.

  Parameters:
    `splitFinder` - the ConstraintSplitPointFinder to be used

### getTolerance

    public double getTolerance()

  Gets the tolerance value used to construct the triangulation.

  Returns:
    a tolerance value

### getVertexFactory

    public ConstraintVertexFactory getVertexFactory()

  Gets the `ConstraintVertexFactory` used to create new constraint vertices at split points.

  Returns:

### setVertexFactory

    public void setVertexFactory(ConstraintVertexFactory vertexFactory)

  Sets a custom `ConstraintVertexFactory` to be used to allow vertices carrying extra information to be created.

  Parameters:
    `vertexFactory` - the ConstraintVertexFactory to be used

### getSubdivision

    public QuadEdgeSubdivision getSubdivision()

  Gets the `QuadEdgeSubdivision` which represents the triangulation.

  Returns:
    a subdivision

### getKDT

    public KdTree getKDT()

  Gets the `KdTree` which contains the vertices of the triangulation.

  Returns:
    a KdTree

### getInitialVertices

    public java.util.List getInitialVertices()

  Gets the sites (vertices) used to initialize the triangulation.

  Returns:
    a List of Vertex

### getConstraintSegments

    public java.util.Collection getConstraintSegments()

  Gets the `Segment`s which represent the constraints.

  Returns:
    a collection of Segments

### getConvexHull

    public Geometry getConvexHull()

  Gets the convex hull of all the sites in the triangulation, including constraint vertices. Only valid after the constraints have been enforced.

  Returns:
    the convex hull of the sites

### insertSite

    public void insertSite(Coordinate p)

  Inserts a site into the triangulation, maintaining the conformal Delaunay property. This can be used to further refine the triangulation if required (e.g. to approximate the medial axis of the constraints, or to improve the grading of the triangulation).

  Parameters:
    `p` - the location of the site to insert

### formInitialDelaunay

    public void formInitialDelaunay()

  Computes the Delaunay triangulation of the initial sites.

### enforceConstraints

    public void enforceConstraints()

  Enforces the supplied constraints into the triangulation.

  Throws:
    `ConstraintEnforcementException` - if the constraints cannot be enforced

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD