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 k
th 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 r.turner@auckland.ac.nz 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