# mba.surf: Surface approximation from bivariate scattered data using... In MBA: Multilevel B-Spline Approximation

## Description

The function `mba.surf` returns a surface approximated from a bivariate scatter of data points using multilevel B-splines.

## Usage

 ```1 2``` ```mba.surf(xyz, no.X, no.Y, n = 1, m = 1, h = 8, extend=FALSE, sp=FALSE, ...) ```

## Arguments

 `xyz` a n x 3 matrix or data frame, where n is the number of observed points. The three columns correspond to point x, y, and z coordinates. The z value is the response at the given x, y coordinates. `no.X` resolution of the approximated surface along the x axis. `no.Y` resolution of the approximated surface along the y axis. `n` initial size of the spline space in the hierarchical construction along the x axis. If the rectangular domain is a square, n = m = 1 is recommended. If the x axis is k times the length of the y axis, n = 1, m = k is recommended. The default is n = 1. `m` initial size of the spline space in the hierarchical construction along the y axis. If the y axis is k times the length of the x axis, m = 1, n = k is recommended. The default is m = 1. `h` Number of levels in the hierarchical construction. If, e.g., n = m = 1 and h = 8, the resulting spline surface has a coefficient grid of size 2^h + 3 = 259 in each direction of the spline surface. See references for additional information. `extend` if FALSE, a convex hull is computed for the input points and all matrix elements in z that have centers outside of this polygon are set to `NA`; otherwise, all elements in z are given an estimated z value. `sp` if TRUE, the resulting surface is returned as a `SpatialPixelsDataFrame` object; otherwise, the surface is in `image` format. `...` `b.box` is an optional vector to sets the bounding box. The vector's elements are minimum x, maximum x, minimum y, and maximum y, respectively.

## Value

List with 8 component:

 `xyz.est` a list that contains vectors x, y and the no.X x no.Y matrix z of estimated z-values. `no.X` `no.X` from arguments. `no.Y` `no.Y` from arguments. `n` `n` from arguments. `m` `m` from arguments. `h` `h` from arguments. `extend` `extend` from arguments. `sp` `sp` from arguments. `b.box` `b.box` defines the bounding box over which z is estimated.

## Note

If `no.X != no.Y` then use `sp=TRUE` for compatibility with the `image` function.

The function `mba.surf` relies on the Multilevel B-spline Approximation (MBA) algorithm. The underlying code was developed at SINTEF Applied Mathematics by Dr. <c3><98>yvind Hjelle. Dr. <c3><98>yvind Hjelle based the algorithm on the paper by the originators of Multilevel B-splines:

S. Lee, G. Wolberg, and S. Y. Shin. (1997) Scattered data interpolation with multilevel B-splines. IEEE Transactions on Visualization and Computer Graphics, 3(3):229–244.

For additional documentation and references see:

## See Also

`mba.points`

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28``` ```## Not run: data(LIDAR) mba.int <- mba.surf(LIDAR, 300, 300, extend=TRUE)\$xyz.est ##Image plot image(mba.int, xaxs="r", yaxs="r") ##Perspective plot persp(mba.int, theta = 135, phi = 30, col = "green3", scale = FALSE, ltheta = -120, shade = 0.75, expand = 10, border = NA, box = FALSE) ##For a good time I recommend using rgl library(rgl) ex <- 10 x <- mba.int[[1]] y <- mba.int[[2]] z <- ex*mba.int[[3]] zlim <- range(z) zlen <- zlim[2] - zlim[1] + 1 colorlut <- heat.colors(as.integer(zlen)) col <- colorlut[ z-zlim[1]+1 ] open3d() surface3d(x, y, z, color=col, back="lines") ## End(Not run) ```

### Example output

```Warning messages:
1: In rgl.init(initValue, onlyNULL) : RGL: unable to open X11 display
2: 'rgl.init' failed, running with 'rgl.useNULL = TRUE'.
null
1
```

MBA documentation built on May 2, 2019, 3:37 p.m.