case class DelaunayTriangulation(pointSet: CompleteIndexedPointSet, halfEdgeTable: HalfEdgeTable, tolerance: Double, debug: Boolean) extends Product with Serializable

Generates the Delaunay triangulation of a set of points.

The DelaunayTriangulation class operates on a collection of Coordinates to produce the unique triangulation (after projecting the points to the x-y plane) that satisfies the condition of each triangle in the result having a circumscribing circle where no vertices of the input point set are in the interior of that circle.

Note that the input set must have 2 or more distinct points. Collinear points are allowed.

Whenever using this class for complex tasks with large quantities of points, numerical issues must be considered. First, this triangulator will pare down the input set so as to remove points which are not numerically distinct. This may result in points which are not strictly equal, but indistinguishable from one another with respect to the geometric predicates (collinearity tests, in-circle tests, orientation tests). Failure to understand and address potential numerical issues in your data *may cause infinite loops*! (It is our experience that sufficiently large point sets will eventually run afoul of these problems if left alone.) The /tolerance/ parameter is set to a reasonable value in the defaults of the DelaunayTriangulation object's apply() method, but bear in mind that problems may arise in your particular case.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. DelaunayTriangulation
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new DelaunayTriangulation(pointSet: CompleteIndexedPointSet, halfEdgeTable: HalfEdgeTable, tolerance: Double, debug: Boolean)

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def boundary(): Int

    Returns a reference to the half edge on the outside of the boundary of the triangulation.

    Returns a reference to the half edge on the outside of the boundary of the triangulation.

    Starting from this half edge, the boundary of the triangulation can be traversed. This exterior loop will have a clockwise winding and will be convex.

  6. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  7. val debug: Boolean
  8. def decimate(nRemove: Int): Unit

    Simplifies a triangulation.

    Simplifies a triangulation.

    This method will remove a specified number of vertices from the triangulation, where the next vertex to be removed causes the least amount of error to be introduced to the surface. This function assumes that all coordinates have a valid z component, and therefore, the triangulation is interpretable as a height field.

    Implementation is based on paper by Garland, Michael, and Paul S. Heckbert. "Surface simplification using quadric error metrics." Proceedings of the 24th annual conference on Computer graphics and interactive techniques. ACM Press/Addison-Wesley Publishing Co., 1997.

  9. def deletePoint(vi: Int): Unit

    A function to remove a vertex from a DelaunayTriangulation that preserves the Delaunay property for all newly created fill triangles.

  10. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  11. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  12. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  13. val halfEdgeTable: HalfEdgeTable
  14. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  15. def isLinear(): Boolean

    Is this triangulation linear?

    Is this triangulation linear?

    If all distinct input points are collinear, this will return true. If so, the triangleMap will be empty.

  16. def isMeshValid(): Boolean

    A correctness check for the triangulation.

    A correctness check for the triangulation.

    Ensures that the mesh is correctly built with no obvious topological errors in the mesh.

  17. def isUnfolded(bound: Int, lo: Int, hi: Int): Boolean

    A version of isUnfolded that is useful for testing subregions of a triangulation.

    A version of isUnfolded that is useful for testing subregions of a triangulation.

    If during construction, a triangulation has smaller regions with their own bounding loops involving only vertex indices in a certain range, one may provide a reference to a bounding edge and the lo and hi indices in the range, and perform the isUnfolded test on that subregion.

  18. def isUnfolded(): Boolean

    A correctness check which tests if two triangles which share an edge overlapping.

  19. def liveVertices: Set[Int]
  20. def navigate(): Unit

    Provides a text-based interactive interface to explore the structure of a triangulation.

  21. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  22. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  23. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  24. def numVertices: Int
  25. val pointSet: CompleteIndexedPointSet
  26. val predicates: TriangulationPredicates
  27. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  28. val tolerance: Double
  29. val triangleMap: TriangleMap

    Contains the triangles of a DelaunayTriangulation

    Contains the triangles of a DelaunayTriangulation

    Note: This collection will be empty if isLinear is true.

  30. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  31. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  32. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  33. def writeWKT(wktFile: String): PrintWriter

    Outputs the triangulation to the named file as a WKT representation of a MultiPolygon.

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped