Compute the distance function of an object, and return it as a function.
distfun(X, ...) # S3 method for ppp
distfun(X, ..., k=1, undef=Inf)
# S3 method for psp
distfun(X, ...)
# S3 method for owin
distfun(X, ..., invert=FALSE)
A function with arguments x,y.
The function belongs to the class "distfun" which has
methods for print and summary, and for geometric
operations like shift.
It also belongs to the class "funxy" which has methods
for plot, contour and persp.
Any suitable dataset representing a two-dimensional
object, such as a point pattern (object of class "ppp"),
a window (object of class "owin") or a
line segment pattern (object of class "psp").
Extra arguments are ignored.
An integer. The distance to the kth nearest point
will be computed.
The value that should be returned if the distance is undefined
(that is, if X contains fewer than k points).
If TRUE, compute the distance transform of the
complement of X.
Adrian Baddeley Adrian.Baddeley@curtin.edu.au, Rolf Turner rolfturner@posteo.net and Ege Rubak rubak@math.aau.dk.
The “distance function” of a set of points \(A\) is the
mathematical function \(f\) such that, for any
two-dimensional spatial location \((x,y)\),
the function value f(x,y)
is the shortest distance from \((x,y)\) to \(A\).
The command f <- distfun(X) returns a function
in the R language, with arguments x,y, that represents the
distance function of X. Evaluating the function f
in the form v <- f(x,y), where x and y
are any numeric vectors of equal length containing coordinates of
spatial locations, yields the values of the distance function at these
locations. Alternatively x can be a
point pattern (object of class "ppp" or "lpp") of
locations at which the distance function should be computed (and then
y should be missing).
This should be contrasted with the related command distmap
which computes the distance function of X
on a grid of locations, and returns the distance
values in the form of a pixel image.
The distance values returned by f <- distfun(X); d <- f(x)
are computed using coordinate geometry; they are more accurate,
but slower to compute, than the distance values returned by
Z <- distmap(X); d <- Z[x]
which are computed using a fast recursive algorithm.
The result of f <- distfun(X) also belongs to the class
"funxy" and to the special class "distfun".
It can be printed and plotted immediately as shown in the Examples.
A distfun object can be converted to a pixel image
using as.im.
distmap,
summary.distfun,
methods.distfun,
methods.funxy,
plot.funxy
f <- distfun(letterR)
f
plot(f)
f(0.2, 0.3)
plot(distfun(letterR, invert=TRUE), eps=0.1)
d <- distfun(cells)
d2 <- distfun(cells, k=2)
d(0.5, 0.5)
d2(0.5, 0.5)
domain(d)
summary(d)
z <- d(japanesepines)
Run the code above in your browser using DataLab