

   PPeerrssppeeccttiivvee PPlloottss

        persp(x = seq(0, 1, len = nrow(z)), y = seq(0, 1, len = ncol(z)), z,
                xlim = range(x), ylim = range(y), zlim = range(z, na.rm=T),
                theta = 0, phi = 15, d = 1, scale = TRUE, col, border, ...)

   AArrgguummeennttss::

        x,y: locations of grid lines at which the values in `z'
             are measured.  These must be in ascending order.
             By default, equally spaced values from 0 to 1 are
             used.  If `x' is a `list', its components `x$x'
             and `x$y' are used for `x' and `y', respectively.

          z: a matrix containing the values to be plotted
             (`NA's are allowed).  Note that `x' can be used
             instead of `z' for convenience.

   xlim, ylim, zlim: x-, y-  and z-limits.  The plot is pro-
             duced so that the rectangular volume defined by
             these limits is visible.

   theta, phi: angles defining the viewing direction.  `theta'
             gives the azimuthal direction and `phi' the eleva-
             tion.

          d: a value which can be used to vary the strength of
             the perspective transformation.  Values of `d'
             greater than 1 will lessen the perspective effect
             and values less and 1 will exaggerate it.

      scale: before viewing the x, y and z coordinates of the
             points defining the surface are transformed to the
             interval [0,1].  If `scale' is `TRUE' the x, y and
             z coordinates are transformed separately.  If
             `scale' is `FALSE' the coordinates are scaled so
             that aspect ratios are retained.  This is useful
             for rendering things like DEM information.

        col: the color of the surface facets.

     border: color of the line drawn around the surface facets.

        ...: additional graphical parameters (see `par') and
             the arguments to `title' may also be supplied.

   DDeessccrriippttiioonn::

        This function draws perspective plots of surfaces over
        the x-y plane.  The plots are produced by first trans-
        forming the coordinates to the interval [0,1].  The
        surface is then viewed by looking at the origin from a
        direction defined by `theta' and `phi'.  If `theta' and
        `phi' are both zero the viewing direction is directly
        down the negative y axis.  Changing `theta' will vary
        the azimuth and changing `phi' the elevation.

   SSeeee AAllssoo::

        `contour' and `image'.

   EExxaammpplleess::

        # (1) The Obligatory Mathematical surface.
        #     Rotated sinc function.

        x <- seq(-10,10,length=50)
        y <- x
        f <- function(x,y)
        {
                r <- sqrt(x^2+y^2)
                sin(r)/r
        }
        z <- outer(x,y,f)
        z[is.na(z)] <- 1
        persp(x, y, z, theta=30, phi=30, expand=0.5, col="lightblue")

        # (2) Visualizing a simple DEM model

        data(volcano)
        z <- 2 * volcano        # Exaggerate the relief
        x <- 10 * (1:nrow(z))   # 10 meter spacing (S to N)
        y <- 10 * (1:ncol(z))   # 10 meter spacing (E to W)
        persp(x, y, z, theta=120, phi=15, scale=FALSE)

        # (3) Now something more complex
        #     We border the surface, to make it more "slice like"
        #     and color the top and sides of the surface differently.

        zmin <- min(z)-20
        z <- rbind(zmin, cbind(zmin, z, zmin), zmin)
        x <- c(min(x)-1e-10, x, max(x)+1e-10)
        y <- c(min(y)-1e-10, y, max(y)+1e-10)

        fill <- matrix("green2", nr=nrow(z)-1, nc=ncol(z)-1)
        fill[,1] <- "gray"
        fill[,ncol(fill)] <- "gray"
        fill[1,] <- "gray"
        fill[nrow(fill),] <- "gray"

        par(bg="lightblue")
        persp(x, y, z, theta=120, phi=15, col=fill, scale=F)
        title(main="Maunga Whau\nOne of 50 Volcanoes in the Auckland Region.",
        font.main=4)

