suspending it from so-called ideal points
(-Inf,-Inf), (Inf,-Inf) (Inf,Inf), and (-Inf,Inf). The triangulation
is also enclosed in a finite rectangular window. A set of dummy
points may be added, in various ways, to the set of data points
being triangulated.
deldir(x, y, dpl=NULL, rw=NULL, eps=1e-09, sort=TRUE, plotit=FALSE, digits=6, z=NULL, zdum=NULL, suppressMsge=FALSE, ...)ppp. (See package spatstat.)If x is a data frame then the x coordinates of the
points to be triangulated or tessellated are taken to be the column
of this data frame which is named x if there is one,
else the first column of the data frame which is not named either
y or z. The y coordinates are taken to be
the column of this data frame which is named y if there is
one. If there is no column named y but there are columns
named x and z then the y coordinates
are taken to be the first other column. If there no
columns named either x or y, then the x
coordinates are taken to be the first column not named z
and the y coordinates are taken to be the second
column not named z.
If there is a column named z and if the argument z
(see below) is NULL, then this the column named z is taken
to be the value of z.
If x is a list (but not a data frame) then it must have
components named x and y, and possibly a component
named z. The x and y components give the
x and y coordinates respectively of the points to
be triangulated or tessellated. If x is not of class
ppp, if it has a component z and if argument z
is NULL, then the z argument is set equal to this
component z. If x is of class ppp, if
the argument z is NULL, if x is marked
(see package spatstat) and if the marks of x are a
vector or a factor (as opposed to a data frame) then the z
argument is set equal to these marks. In this case x
should not have a component z, and at any rate such
a component would be ignored.
ndx: The x-dimension of a rectangular grid; if either
ndx or ndy is null, no grid is constructed.
ndy: The y-dimension of the aforementioned rectangular
grid.
nrad: The number of radii or spokes, emanating from
each data point, along which dummy points are to be added.
nper: The number of dummy points per spoke.
fctr: A numeric multiplicative factor
determining the length of each spoke; each spoke is of length equal
to fctr times the mean nearest neighbour distance of the data.
(This distance is calculated by the auxiliary function mnnd().)
x: A vector of x-coordinates of ad hoc dummy points
y: A vector of the corresponding y-coordinates of
ad hoc dummy points
TRUE (the default) the data (including dummy
points) are sorted into a sequence of bins prior to triangulation;
this makes the algorithm slightly more efficient. Normally one would
set sort equal to FALSE only if one wished to observe some of the
fine detail of the way in which adding a point to a data set affected
the triangulation, and therefore wished to make sure that the point
in question was added last. Essentially this argument would get used
only in a de-bugging process.
TRUE a plot is produced. The nature
of the plot may be controlled by using the ... argument
to pass appropriate arguments to plot.deldir(). Without
further instruction a plot of the points being triangulated
and of both the triangulation and the tessellation is produced;
deldir
package DOES NOT do weighted tessellation. The so-called
weights in fact need not be numeric.)If z is left NULL then it is taken to be the third
column of x, if x is a data frame or to be the z
component of x if x is a generic list. If z
is left NULL and if x is of class ppp and is
marked (see package spatstat) and if in addition
the marks are atomic (i.e. not a data frame) then z
is taken to be the marks of x.
z to be associated with any dummy points that are
created. See Warnings.
deldir) should be
suppressed.
add, wlines, wpoints,
number, nex, col, lty, pch,
xlim, and ylim (and possibly other plotting parameters)
may be passed to plot.deldir() through ...
if plotit=TRUE.
deldir), invisible if plotit=TRUE, with components:(x1,y1,x2,y2). The last two entries are the indices
of the two points which are joined.
(x1,y1,x2,y2). The fifth and
sixth entries, in the columns named ind1 and ind2,
are the indices of the two points, in the set being triangulated,
which are separated by that edge. The seventh and eighth entries,
in the columns named bp1 and bp2 are logical values.
The entry in column bp1 indicates whether the first endpoint
of the corresponding edge of a Dirichlet tile is a boundary point
(a point on the boundary of the rectangular window). Likewise for
the entry in column bp2 and the second endpoint of the edge.The nineth and tenth entries, in columns named thirdv1 and
thirdv2 are the indices of the third vertex of the Delaunay
triangle whose circumcentre constitutes the corresponding vertex of
the edge under consideration. (The other two vertices are indexed
by the entries of columns ind1 and ind2.)The entries of columns thirdv1 and thirdv2 may (also)
take the values $-1, -2, -3$, and $-4$. This will be the case
if the circumcentre in question lies outside of the rectangular
window rw. In these circumstances the corresponding endpoint
of the tile edge is the intersection of the line joining the two
circumcentres with the boundary of rw, and the numeric
value of the entry of column vi3 indicates which side.
The numbering follows the convention for numbering the sides of a
plot region in R: 1 for the bottom side, 2 for the left side,
3 for the top side and 4 for the right side.Note that the entry in column thirdv1 will be negative if and
only if the corresponding entry in column bp1 is TRUE.
Similarly for columns thirdv2 and bp2.
n.data + n.dum rows
(see below). The rows correspond to the points in the set being
triangulated. The columns are:
x (the $x$-coordinate of the point)
y (the $y$-coordinate of the point)
pt.type (a character vector with entries data
and dummy; present only if n.dum > 0)
z (the auxiliary values or weights; present only if
these were specified)
n.tri (the number of Delaunay triangles emanating from
the point)
del.area (1/3 of the total area of all the Delaunay
triangles emanating from the point)
del.wts (the corresponding entry of the del.area
column divided by the sum of this column)
n.tside (the number of sides --- within the rectangular
window --- of the Dirichlet tile surrounding the point)
nbpt (the number of points in which the Dirichlet tile
intersects the boundary of the rectangular window)
dir.area (the area of the Dirichlet tile surrounding
the point)
dir.wts (the corresponding entry of the dir.area
column divided by the sum of this column).
summary correspond to real points.
summary correspond to dummy
points.
del.area column of summary.
dir.area column of summary.
deldir() before duplicate points (if any) were
removed. These indices are used by triang.list().
NULL) are identical.plotit=TRUE a plot of the triangulation and/or tessellation
is produced or added to an existing plot.frac for this function, which defaulted
to 0.0001. Points were deemed to be duplicates if the difference
in x-coordinates was less than frac times the width
of rw and y-coordinates was less than frac
times the height of rw. This process has been changed to
one which uses duplicated() on the data frame whose
columns are x and y. As a result it may happen that points which were previously
eliminated as duplicates will no longer be eliminated. (And
possibly vice-versa.) delsgs and summary of the value
returned by deldir() are now data frames rather than
matrices. The component summary was changed to allow the
auxiliary values z to be of arbitrary mode (i.e.
not necessarily numeric). The component delsgs was then
changed for consistency. Note that the other matrix-like
component dirsgs has been a data frame since time immemorial. A message alerting the user to the foregoing two items is printed
out the first time that deldir() is called with
suppressMsge=FALSE in a given session. In succeeding
calls to deldir() in the same session, no message is printed.
(I.e. the alerting message is printed at most once
in any given session.) The alerting message is not produced via the
warning() function, so suppressWarnings() will
not suppress its appearance. To effect such suppression
(necessary only on the first call to deldir() in a
given session) one must set the suppressMsge argument of
deldir equal to TRUE. z, of
auxiliary values or weights associated with the
points being triangulated, is supplied, then it is up to the user to
supply the corresponding auxiliary values or weights associated with
the dummy points. These values should be supplied as zdum.
If zdum is not supplied then the auxiliary values or weights
associated with the dummy points are all taken to be missing values
(i.e. NA).
Further revisions were made December 1996. The author gratefully acknowledges the contributions, assistance, and guidance of Mark Berman, of D.M.S., CSIRO, in collaboration with whom this project was originally undertaken. The author also acknowledges much useful advice from Adrian Baddeley, formerly of D.M.S., CSIRO (now Professor of Statistics at Curtin University). Daryl Tingley of the Department of Mathematics and Statistics, University of New Brunswick provided some helpful insight. Special thanks are extended to Alan Johnson, of the Alaska Fisheries Science Centre, who supplied two data sets which were extremely valuable in tracking down some errors in the code.
Don MacQueen, of Lawrence Livermore National Lab, wrote an Splus driver function for the old stand-alone version of this software. That driver, which was available on Statlib, is now deprecated in favour of the current package ``delaunay'' package. Don also collaborated in the preparation of that package.
See the ChangeLog for information about further revisions
and bug-fixes.
Ahuja, N. and Schacter, B. J. (1983). Pattern Models. New York: Wiley.
plot.deldir(), tile.list(), triang.list()
x <- c(2.3,3.0,7.0,1.0,3.0,8.0)
y <- c(2.3,3.0,2.0,5.0,8.0,9.0)
# An "alerting note" is printed.; let deldir() choose the
# rectangular window.
dxy1 <- deldir(x,y)
# User chooses the rectangular window.
dxy2 <- deldir(x,y,rw=c(0,10,0,10))
# Put dummy points at the corners of the rectangular
# window, i.e. at (0,0), (10,0), (10,10), and (0,10)
dxy3 <- deldir(x,y,dpl=list(ndx=2,ndy=2),rw=c(0,10,0,10))
# Plot the triangulation created (but not the tesselation).
## Not run:
# dxy2 <- deldir(x,y,rw=c(0,10,0,10),plot=TRUE,wl='tr')
# ## End(Not run)
# Auxiliary values associated with points; 4 dummy points to be
# added so 4 dummy "z-values" provided.
z <- c(1.63,0.79,2.84,1.56,0.22,1.07)
zdum <- rep(42,4)
dxy4 <- deldir(x,y,dpl=list(ndx=2,ndy=2),rw=c(0,10,0,10),z=z,zdum=zdum)
Run the code above in your browser using DataLab