The `deldir()`

function in the deldir package computes a Delaunay triangulation of a set
of points. These functions display it as a surface.

```
# S3 method for deldir
plot3d(x, ...)
# S3 method for deldir
persp3d(x, ..., add = FALSE)
# S3 method for deldir
as.mesh3d(x, col = "gray", coords = c("x", "y", "z"),
smooth = TRUE, normals = NULL, texcoords = NULL, ...)
```

## Arguments

- x
A `"deldir"`

object, produced by the `deldir()`

function. It must contain `z`

values.

- add
Whether to add surface to existing plot (`add = TRUE`

)
or create a new plot (`add = FALSE`

, the default).

- col
Colors to apply to each vertex in the triangulation.
Will be recycled as needed.

- coords
See Details below.

- smooth
Whether to average normals at vertices for
a smooth appearance.

- normals
User-specified normals at each vertex. Requires `smooth = FALSE`

.

- texcoords
Texture coordinates at each vertex.

- ...
See Details below.

## Details

These functions construct a `mesh3d`

object
corresponding to the triangulation in `x`

. The
`plot3d`

and `persp3d`

methods plot it.

The `coords`

parameter allows surfaces to be
plotted over any coordinate plane. It should be
a permutation of the column names `c("x", "y", "z")`

from the `"deldir"`

object. The first will be used
as the x coordinate, the second as the y coordinate,
and the third as the z coordinate.

The `...`

parameters in `plot3d.deldir`

are passed to `persp3d.deldir`

; in `persp3d.deldir`

they are
passed to both `as.mesh3d.deldir`

and `persp3d.mesh3d`

;
in `as.mesh3d.deldir`

they are used as material parameters
in a `tmesh3d`

call.

## Examples

```
x <- rnorm(200, sd = 5)
y <- rnorm(200, sd = 5)
r <- sqrt(x^2 + y^2)
z <- 10 * sin(r)/r
col <- cm.colors(20)[1 + round(19*(z - min(z))/diff(range(z)))]
save <- options(rgl.meshColorWarning = FALSE)
# This code is awkward: to work with demo(rglExamples),
# we need auto-printing of the plots. This means we
# have to repeat the test for deldir.
haveDeldir <- checkDeldir()
if (haveDeldir) {
dxyz <- deldir::deldir(x, y, z = z, suppressMsge = TRUE)
persp3d(dxyz, col = col)
}
if (haveDeldir) {
open3d()
# Do it without smoothing and with a different orientation.
persp3d(dxyz, col = col, coords = c("z", "x", "y"), smooth = FALSE)
}
options(save)
```