R: Triangulate and draw a polygon in three dimensions.

polygon3d {rgl} | R Documentation

## Triangulate and draw a polygon in three dimensions.

### Description

This function takes a description of a flat polygon in x, y and z coordinates, and draws it in three dimensions.

### Usage

    polygon3d(x, y = NULL, z = NULL, fill = TRUE, plot = TRUE,
              coords = 1:2, random = TRUE, ...)

### Arguments

`x, y, z` | Vertices of the polygon in a form accepted by `xyz.coords`.
`fill` | logical; should the polygon be filled?
`plot` | logical; should the polygon be displayed?
`coords` | Which two coordinates (`x = 1`, `y = 2`, `z = 3`) describe the polygon.
`random` | Should a random triangulation be used?
`...` | Other parameters to pass to `lines3d` or `shade3d` if `plot = TRUE`.

### Details

The function triangulates the two dimensional polygon described by `coords`, then applies the triangulation to all three coordinates. No check is made that the polygon is actually all in one plane, but the results may be somewhat unpredictable (especially if `random = TRUE`) if it is not.

Polygons need not be simple; use `NA` to indicate separate closed pieces. For `fill = FALSE` there are no other restrictions on the pieces, but for `fill = TRUE` the resulting two-dimensional polygon needs to be one that `triangulate` can handle.

### Value

If `plot = TRUE`, the id number of the lines (for `fill = FALSE`) or triangles (for `fill = TRUE`) that have been plotted.

If `plot = FALSE`, then for `fill = FALSE`, a vector of indices into the XYZ matrix that could be used to draw the polygon. For `fill = TRUE`, a triangular mesh object representing the triangulation.

### Author(s)

Duncan Murdoch

### See Also

`extrude3d` for a solid extrusion of a polygon, `triangulate` for the triangulation.

### Examples

    theta <- seq(0, 4*pi, len = 50)
    r <- theta + 1
    r <- c(r[-50], rev(theta*0.8) + 1)
    theta <- c(theta[-50], rev(theta))
    x <- r*cos(theta)
    y <- r*sin(theta)
    plot(x, y, type = "n")
    polygon(x, y)
    polygon3d(x, y, x + y, col = "blue")

[Package rgl version 0.99.9 Index]