1) The triangle vertices are nodes.
2) No triangle contains a node other than its vertices.
3) The interiors of the triangles are pairwise disjoint.
4) The union of triangles is the convex hull of the set of nodes (the smallest convex set which contains the nodes).
5) The interior of the circumcircle of each triangle contains no node.
The first four properties define a triangulation, and the last property results in a triangulation which is as close as possible to equiangular in a certain sense and which is uniquely defined unless four or more nodes lie on a common circle. This property makes the triangulation well-suited for solving closest point problems and for triangle-based interpolation.
The triangulation can be generalized to a constrained
Delaunay triangulation by a call to add.constraint
.
This allows for user-specified boundaries defining a nonconvex
and/or multiply connected region.
The operation count for constructing the triangulation is close to O(N) if the nodes are presorted on X or Y components. Also, since the algorithm proceeds by adding nodes incrementally, the triangulation may be updated with the addition (or deletion) of a node very efficiently. The adjacency information representing the triangulation is stored as a linked list requiring approximately 13N storage locations.
tri.mesh(x, y = NULL, duplicate = "error")
y
is missing
x
should contain two elements $x
and $y
."error"
-- default, "strip"
-- remove all duplicate points, "remove"
-- leave one point of duplicate points."tri"
tri
, print.tri
, plot.tri
,
summary.tri
, triangles
,
convex.hull
, neighbours
,
add.constraint
.data(tritest)
tritest.tr<-tri.mesh(tritest$x,tritest$y)
tritest.tr
Run the code above in your browser using DataCamp Workspace