# distfun

##### Distance Map as a Function

Compute the distance function of an object, and return it as a function.

##### Usage

`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)

##### Arguments

- X
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.

- k
An integer. The distance to the

`k`

th nearest point will be computed.- undef
The value that should be returned if the distance is undefined (that is, if

`X`

contains fewer than`k`

points).- invert
If

`TRUE`

, compute the distance transform of the complement of`X`

.

##### Details

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 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`

.

##### Value

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`

.

##### See Also

`distmap`

,
`summary.distfun`

,
`methods.distfun`

,
`methods.funxy`

,
`plot.funxy`

##### Examples

```
# NOT RUN {
data(letterR)
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)
# }
```

*Documentation reproduced from package spatstat, version 1.63-3, License: GPL (>= 2)*