| phull {phull} | R Documentation |
The function determines the p-hull of a finite planar set.
phull(x, y=NULL, p=1, p_correction=TRUE)
x,y |
coordinate vectors of points to join. |
p |
0<= p<=infty. |
p_correction |
logical; if TRUE then p>100 or <0.1 is changed to Inf or 0, respectively. |
The coordinates can be passed in two equal-length vectors, a two-column matrix, or a list.
The coordinates may not contain NA values.
The p-hull is calculated using the O(n log n)-time algorithm (Gagolewski et al, 2009) which generalizes the well-known Graham's scan (Graham, 1972).
The function returns an object of class phull.
It is a list containing the following components:
n |
the number of input points. |
data.name |
a character string giving the name(s) of the data. |
xrange |
a vector of 2 elements; range of x coordinates. |
yrange |
a vector of 2 elements; range of y coordinates. |
bl2br,br2tr,tr2tl,tl2bl |
internal; definition of p-hull. |
M. Gagolewski, M. Nowakiewicz, M. Debski (2009). Efficient algorithms for computing ``geometric'' scientific impact indices. Submitted for publication.
R. L. Graham (1972). An efficient algorithm for determining the convex hull of a finite planar set. Information Processing Letters 1, 132–133.
x <- rnorm(1000); y <- rnorm(1000); # generate some points
phull_0.5 <- phull(x, y, 0.5); # calculate the p-hull
phull_1.0 <- phull(x, y, 1.0);
phull_2.0 <- phull(x, y, 2.0);
phull_5.0 <- phull(x, y, 5.0);
plot(x, y, type="p", pch='*'); # plot the points
draw(phull_0.5, col=2); # draw the first p-hull
draw(phull_1.0, col=3);
draw(phull_2.0, col=4);
draw(phull_5.0, col=5);
legend("topleft", c("p=0.5", "p=1.0", "p=2.0", "p=5.0"), col=2:5, lty=1)
plot(x, y, type="p", pch='*'); # plot the points
lines(phull_5.0); # add p-lines