as.mesh3d.ashape3d converts an alphashape3d::ashape3d object into a nat/rgl compatible mesh3d surface

Note that this provides a link to the Rvcg package

as.mesh3d.boundingbox converts a nat boundingbox object into an rgl compatible mesh3d object.

# S3 method for ashape3d
as.mesh3d(x, tri_to_keep = 2L, ...)

# S3 method for hxsurf
as.mesh3d(x, Regions = NULL, material = NULL, drop = TRUE, ...)

# S3 method for boundingbox
as.mesh3d(x, ...)



Object to convert to mesh3d


Which alphashape triangles to keep (expert use only - see triang entry in Value section of ashape3d docs for details.)


Additional arguments for methods


Character vector or regions to select from hxsurf object


rgl materials such as color


Whether to drop unused vertices (default TRUE)


a mesh3d object which can be plotted and manipulated using rgl and nat packages.


An alpha shape is a generalisation of a convex hull enclosing a set of points. Unlike a convex hull, the resultant surface can be partly concave allowing the surface to more closely follow the set of points.

In this implementation, the parameter alpha is a scale factor with units of length that defines a spatial domain. When alpha is larger the alpha shape approaches the convex hull; when alpha is smaller the alpha shape has a greater number of faces / vertices i.e. it follows the points more closely.

See also


# \donttest{ library(alphashape3d)
#> Loading required package: geometry
kcs20.a=ashape3d(xyzmatrix(kcs20), alpha = 10) plot(kcs20.a)
#> Device 1 : alpha = 10
# convert to mesh3d kcs20.mesh=as.mesh3d(kcs20.a) # check that all points are inside mesh all(pointsinside(kcs20, kcs20.mesh))
#> [1] FALSE
# and show that we can also use the alphashape directly all(pointsinside(kcs20, kcs20.a))
#> [1] TRUE
nclear3d() wire3d(kcs20.mesh) plot3d(kcs20, col=type, lwd=2) # } bb=boundingbox(kcs20) mbb=as.mesh3d(bb) # \donttest{ plot3d(kcs20) # simple plot plot3d(bb) shade3d(mbb, col='red', alpha=0.3) # }