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

convhullnR Documentation

Compute smallest convex hull that encloses a set of points


Returns information about the smallest convex complex of a set of input points in N-dimensional space (the convex hull of the points). By default, indices to points forming the facets of the hull are returned; optionally normals to the facets and the generalised surface area and volume can be returned. This function interfaces the Qhull library.


  options = "Tv",
  output.options = NULL,
  return.non.triangulated.facets = FALSE



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


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


String containing Qhull options to generate extra output. Currently n (normals) and FA (generalised areas and volumes) are supported; see ‘Value’ for details. If output.options is TRUE, select all supported options.


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


By default (return.non.triangulated.facets is FALSE), return an M-by-N matrix in which each row contains the indices of the points in p forming an N-1-dimensional facet. e.g In 3 dimensions, there are 3 indices in each row describing the vertices of 2-dimensional triangles.

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.

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


The points passed to convnhulln


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


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.


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.


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


This function was originally a port of the Octave convhulln function written by Kai Habel.

See further notes in delaunayn.


Raoul Grasman, Robert B. Gramacy, Pavlo Mozharovskyi and David Sterratt


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

See Also

intersectn, delaunayn, surf.tri, convex.hull


## Points in a sphere
ps <- matrix(rnorm(3000), ncol=3)
ps <- sqrt(3)*ps/drop(sqrt((ps^2) %*% rep(1, 3))) <- t(convhulln(ps))  # see the qhull documentations for the options
## Not run: 
for(i in 1:(8*360)) rgl::view3d(i/8)

## End(Not run)

## Square
pq <- rbox(0, C=0.5, D=2)
# Return indices only
# Return convhulln object with normals, generalised area and volume
ch <- convhulln(pq, output.options=TRUE)

## Cube
pc <- rbox(0, C=0.5, D=3)
# Return indices of triangles on surface
# Return indices of squares on surface
convhulln(pc, return.non.triangulated.facets=TRUE)

geometry documentation built on Feb. 16, 2023, 10:08 p.m.