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)
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.
as.mesh3d
, tmesh3d
,
as.hxsurf
, read.hxsurf
Other hxsurf:
as.hxsurf()
,
materials()
,
plot3d.hxsurf()
,
read.hxsurf()
,
subset.hxsurf()
,
write.hxsurf()
# \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)
# }