vignette("polyCub")
now uses the lightweight
"knitr::knitr"
engine rather than
"knitr::rmarkdown"
.polyCub.exact.Gauss()
is defunct. It may be
resurrected in future versions, using a reliable replacement for
gpclib::tristrip()
(#2).
Removed remaining references to archived packages gpclib and rgeos.
polyCub now requires R >= 3.2.0.
_R_CHECK_DEPENDS_ONLY_=true
.Support "(MULTI)POLYGON"
geometries from package sf as
integration domains (#3). Since
these classes do not strictly enforce a particular ring direction, the
vertex order is checked when the polygon coordinates are extracted for
cubature. Thus, sf polygons are a less efficient choice
for polyCub input than polygons from
sp or spatstat.geom. Note that
"POLYGON"
objects were already accepted in previous
versions of polyCub but this was undocumented and
didn’t check the vertex order.
The suggested package spatstat was split into
several packages. Package polyCub now only suggests
spatstat.geom (to handle "owin"
polygons).
Added a getting started vignette("polyCub")
(suggested by @wrathematics in openjournals/joss-reviews#1056).
Fix minor compiler warning about missing types
field
in R_CMethodDef
(@wrathematics, #1).
Package polyCub no longer attaches package sp (moved from “Depends” to “Imports”).
The R code of the examples is no longer installed by default. Use
the --example
flag of R CMD INSTALL to achieve
that.
The README now exemplifies the four different cubature rules.
The exported C-function polyCub_iso()
…
did not handle its stop_on_error
argument correctly
(it would always stop on error).
now detects non-finite intrfr
function values and
gives an informative error message (rather than just reporting “abnormal
termination of integration routine”).
Package polyCub no longer strictly depends on
package spatstat.
It is only required for polyCub.midpoint()
and for polygon
input of class "owin"
.
Added full C-implementation of polyCub.iso()
, which
is exposed as "polyCub_iso"
for use by other R packages
(notably future versions of surveillance)
via LinkingTo: polyCub
and
#include <polyCubAPI.h>
.
Accommodate CRAN checks: add missing import from graphics, register native routines and disable symbol search
polyCub.midpoint()
works directly with input
polygons of classes "gpc.poly"
and
"SpatialPolygons"
, since package polyCub
now registers corresponding as.owin
-methods.
polyCub.exact.Gauss()
did not work if the
tristrip
of the transformed input polygon contained
degenerate triangles (spotted by Ignacio Quintero).
Line integration in polyCub.iso()
could break due to
division by zero if the center
point was part of the
polygon boundary.
Nodes and weights for polyCub.SV()
were only cached
up to nGQ=59
, not 60 as announced in version 0.5-0. Fixed
that which also makes examples truly run without
statmod.
In polyCub.SV()
, the new special setting
f=NULL
means to only compute nodes and weights.
Internal changes to the "gpc.poly"
converters to
accommodate spatstat
1.39-0.
polyCub.SV()
gained an argument engine
to choose among available implementations. The new and faster
C-implementation is the default. There should not be any numerical
differences in the result of the cubature.
Package statmod
is no longer strictly required (imported). Nodes and weights for
Gauss-Legendre quadrature in polyCub.SV()
are now cached in
the polyCub package up to nGQ=60
.
statmod::gauss.quad
is only queried for a
higher number of nodes.
polyCub.iso()
…
could not handle additional arguments for
integrate()
given in the control
list.
now applies the control
arguments also to the
numerical approximation of intrfr
.
The checkintrfr()
function is exported and
documented.
Added a CITATION file.
plotpolyf()
…
gained an additional argument print.args
, an
optional list of arguments passed to print.trellis()
if
use.lattice=TRUE
.
passed a data frame of coordinates to f
instead of a matrix as documented.
rgeos (and therefore the GEOS library) is no longer strictly required (moved from “Imports” to “Suggests”).
Added coerce
-methods from "Polygons"
(or "SpatialPolygons"
or "Polygon"
) to
"owin"
(as(..., "owin")
).
S4-style coerce
-methods between
"gpc.poly"
and "Polygons"
/"owin"
have been removed from the package (since we no longer import the formal
class "gpc.poly"
from gpclib or
rgeos). However, there are two new functions
gpc2owin
and owin2gpc
similar to those dropped
from spatstat
since version 1.34-0.
Moved discpoly()
back to surveillance
since it is only used there.
The latter two changes cause surveillance version 1.6-0 to be incompatible with this new version of polyCub. Appropriate modifications have been made in the new version 1.7-0 of surveillance.
polyCub.SV()
thorough optimization of polyCub.SV()
-related code
resulted in about 27% speed-up:
use mapply()
instead of a
for
-loop
avoid cbind()
use tcrossprod()
less object copying
xylist()
is now exported. It simply extracts polygon
coordinates from various spatial classes (with same unifying intention
as xy.coords()
).
A polyregion
of class "SpatialPolygons"
of length more than 1 now works in
polyCub
-methods.
Use aspect ratio of 1 in plotpolyf()
.
R CMD check
in the current R development version (also
import packages into the NAMESPACE which are listed in the “Depends”
field).New cubature method polyCub.iso()
specific to
isotropic functions (thanks to Emil Hedevang for the basic
idea).
New function plotpolyf()
to plot a polygonal domain
on top of an image of a bivariate function.
The package now depends on R >= 2.15.0 (for
.rowSums()
).
The package no longer registers "owin"
as an
S4-class since we depend on the sp package which does
the job. This avoids a spurious warning (in
.simpleDuplicateClass()
) upon package
installation.
In discpoly()
, the argument r
has been
renamed to radius
. This is backward compatible by partial
argument matching in old code.
This is the initial version of the polyCub package mainly built on functions previously maintained within the surveillance package. These methods for cubature of polygonal domains have been outsourced into this separate polyCub package since they are of general use for other packages as well.
The polyCub package has more documentation and
tests, avoids the use of gpclib
as far as possible (using rgeos
instead), and solves a compatibility issue with package maptools
(use setClass("owin")
instead of
setOldClass("owin")
).