ashape {alphahull} | R Documentation |
alpha-shape calculation
Description
This function calculates the \alpha
-shape of a given sample for \alpha>0
.
Usage
ashape(x, y = NULL, alpha)
Arguments
x , y |
The |
alpha |
Value of |
Details
An attempt is made to interpret the arguments x and y in a way suitable for computing the \alpha
-shape, see xy.coords
.
The \alpha
-shape is defined for any finite number of points. However, since the algorithm is based on the Delaunay triangulation, at least three non-collinear points are required.
If y
is NULL and x
is an object of class "delvor"
, then the \alpha
-shape is computed without invoking again the function delvor
(it reduces the computational cost).
The function ashape
returns (among other values) the matrix edges
. The structure of edges
is that of matrix mesh
returned by the function delvor
. Note that the \alpha
-shape is a subgraph of the Delaunay triangulation and, therefore, edges
is a submatrix of mesh
.
Value
A list with the following components:
edges |
A n.seg-row matrix with the coordinates and indexes of the edges of the Delaunay triangulation that form the |
length |
Length of the |
alpha |
Value of |
alpha.extremes |
Vector with the indexes of the sample points that are |
delvor.obj |
Object of class |
x |
A 2-column matrix with the coordinates of the set of points. |
References
Edelsbrunner, H., Kirkpatrick, D.G. and Seidel, R. (1983). On the shape of a set of points in the plane. IEEE Transactions on Information Theory, 29(4), pp.551-559.
See Also
Examples
## Not run:
# Uniform sample of size n=300 in the annulus B(c,0.5)\B(c,0.25),
# with c=(0.5,0.5).
n <- 300
theta<-runif(n,0,2*pi)
r<-sqrt(runif(n,0.25^2,0.5^2))
x<-cbind(0.5+r*cos(theta),0.5+r*sin(theta))
# Value of alpha
alpha <- 0.1
# alpha-shape
ashape.obj <- ashape(x, alpha = alpha)
# If we change the value of alpha there is no need to compute
# again the Delaunay triangulation and Voronoi Diagram
alpha <- 0.4
ashape.obj.new <- ashape(ashape.obj$delvor.obj, alpha = alpha)
# Random sample from a uniform distribution on a Koch snowflake
# with initial side length 1 and 3 iterations
x <- rkoch(2000, side = 1, niter = 3)
# Value of alpha
alpha <- 0.05
# alpha-shape
ashape.obj <- ashape(x, alpha = alpha)
## End(Not run)