Generally for model development purposes.
wrap(obj, bounds, withHeading)
# S4 method for matrix,Extent,missing
wrap(obj, bounds)
# S4 method for SpatialPoints,ANY,missing
wrap(obj, bounds)
# S4 method for matrix,Raster,missing
wrap(obj, bounds)
# S4 method for matrix,Raster,missing
wrap(obj, bounds)
# S4 method for matrix,matrix,missing
wrap(obj, bounds)
# S4 method for SpatialPointsDataFrame,Extent,logical
wrap(obj, bounds, withHeading)
# S4 method for SpatialPointsDataFrame,Raster,logical
wrap(obj, bounds, withHeading)
# S4 method for SpatialPointsDataFrame,matrix,logical
wrap(obj, bounds, withHeading)
A SpatialPoints*
object, or matrix of coordinates.
Either a Raster*
, Extent
, or bbox
object
defining bounds to wrap around.
Logical. If TRUE
, then the previous points must be
wrapped also so that the subsequent heading calculation will work.
Default FALSE
. See details.
Same class as obj
, but with coordinates updated to reflect the wrapping.
If withHeading
used, then obj must be a SpatialPointsDataFrame
that contains two columns, x1
and y1
, with the immediately previous
agent locations.
library(quickPlot)
library(raster)
xrange <- yrange <- c(-50, 50)
hab <- raster(extent(c(xrange, yrange)))
hab[] <- 0
# initialize agents
N <- 10
# previous points
x1 <- rep(0, N)
y1 <- rep(0, N)
# initial points
starts <- cbind(x = stats::runif(N, xrange[1], xrange[2]),
y = stats::runif(N, yrange[1], yrange[2]))
# create the agent object
agent <- SpatialPointsDataFrame(coords = starts, data = data.frame(x1, y1))
ln <- rlnorm(N, 1, 0.02) # log normal step length
sd <- 30 # could be specified globally in params
if (interactive()) {
clearPlot()
Plot(hab, zero.color = "white", axes = "L")
}
if (requireNamespace("SpaDES.tools")) {
for (i in 1:10) {
agent <- SpaDES.tools::crw(agent = agent,
extent = extent(hab), stepLength = ln,
stddev = sd, lonlat = FALSE, torus = TRUE)
if (interactive()) Plot(agent, addTo = "hab", axes = TRUE)
}
}