https://github.com/cran/spatstat
Raw File
Tip revision: bf8ae0dd7e77ca7d4beccf70eb1f8074369ece52 authored by Adrian Baddeley on 03 August 2006, 18:31:58 UTC
version 1.9-4
Tip revision: bf8ae0d
density.psp.R
#
#
#  density.psp.R
#
#  $Revision: 1.3 $    $Date: 2006/02/24 09:42:17 $
#
#

density.psp <- function(x, sigma, ..., edge=TRUE) {
  verifyclass(x, "psp")
  if(missing(sigma))
    sigma <- 0.1 * diameter(x$window)
  len <- lengths.psp(x)
  w <- as.mask(x$window, ...)
  xx <- as.vector(raster.x(w))
  yy <- as.vector(raster.y(w))
  for(i in seq(x$n)) {
    en <- x$ends[i,]
    coz <- (en$x1 - en$x0)/len[i]
    zin <- (en$y1 - en$y0)/len[i]
    dx <- xx - en$x0
    dy <- yy - en$y0
    u1 <- dx * coz + dy * zin
    u2 <- - dx * zin + dy * coz
    value <- dnorm(u2, sd=sigma) *
             (pnorm(u1, sd=sigma) - pnorm(u1-len[i], sd=sigma))
    totvalue <- if(i == 1) value else (value + totvalue)
  }
  dens <- im(totvalue, w$xcol, w$yrow)
  if(edge) {
    edg <- second.moment.calc(midpoints.psp(x), sigma, what="edge", ...)
    dens <- eval.im(dens/edg)
  }
  dens <- dens[x$window, drop=FALSE]
  return(dens)
}
back to top