geometry (version 0.4.1)

convhulln: Compute smallest convex hull that encloses a set of points

Description

Returns an index matrix to the points of simplices (“triangles”) that form the smallest convex simplical complex of a set of input points in \(N\)-dimensional space. This function interfaces the Qhull library.

Usage

convhulln(p, options = "Tv", output.options = NULL,
  return.non.triangulated.facets = FALSE)

Arguments

p

An \(M\)-by-\(N\) matrix. The rows of p represent \(M\) points in \(N\)-dimensional space.

options

String containing extra options for the underlying Qhull command; see details below and Qhull documentation at ../doc/qhull/html/qconvex.html#synopsis.

output.options

String containing Qhull options to control output. Currently n (normals) and FA (generalised areas and volumes) are supported. Causes an object of return value for details. If output.options is TRUE, select all supported options.

return.non.triangulated.facets

logical defining whether the output facets should be triangulated; FALSE by default.

Value

If return.non.triangulated.facets is FALSE (default), return an \(M\)-by-\(N\) index matrix of which each row defines an \(N\)-dimensional “triangle”.

If return.non.triangulated.facets is TRUE then the number of columns equals the maximum number of vertices in a facet, and each row defines a polygon corresponding to a facet of the convex hull with its vertices followed by NAs until the end of the row. The indices refer to the rows in p.

If the output.options or options argument contains FA or n, return a list with class convhulln comprising the named elements:

hull

The convex hull, represented as a matrix, as described above

area

If FA is specified, the generalised area of the hull. This is the surface area of a 3D hull or the length of the perimeter of a 2D hull. See ../doc/qhull/html/qh-optf.html#FA.

vol

If FA is specified, the generalised volume of the hull. This is volume of a 3D hull or the area of a 2D hull. See ../doc/qhull/html/qh-optf.html#FA.

normals

If n is specified, this is a matrix hyperplane normals with offsets. See ../doc/qhull/html/qh-opto.html#n.

Details

For silent operation, specify the option Pp.

References

Barber, C.B., Dobkin, D.P., and Huhdanpaa, H.T., “The Quickhull algorithm for convex hulls,” ACM Trans. on Mathematical Software, Dec 1996.

http://www.qhull.org

See Also

convex.hull, delaunayn, surf.tri, distmesh2d, intersectn

Examples

Run this code
# NOT RUN {
# example convhulln
# ==> see also surf.tri to avoid unwanted messages printed to the console by qhull
ps <- matrix(rnorm(3000), ncol=3)  # generate points on a sphere
ps <- sqrt(3)*ps/drop(sqrt((ps^2) %*% rep(1, 3)))
ts.surf <- t(convhulln(ps))  # see the qhull documentations for the options
# }
# NOT RUN {
rgl.triangles(ps[ts.surf,1],ps[ts.surf,2],ps[ts.surf,3],col="blue",alpha=.2)
for(i in 1:(8*360)) rgl.viewpoint(i/8)
# }
# NOT RUN {
# }

Run the code above in your browser using DataLab