# dspnt3s, dspnt3d

Routines that interpolate 3-d data at specified points. These routines are part of the Dsgrid package which implements a simple inverse distance weighted interpolation algorithm.

## Synopsis

```    function dspnt3s(
x[*]  : float,
y[*]  : float,
z[*]  : float,
u[*]  : float,
xo[*] : float,
yo[*] : float,
zo[*] : float
)

function dspnt3d(
x[*] :  double,
y[*] :  double,
z[*] :  double,
u[*] :  double,
xo[*] : double,
yo[*] : double,
zo[*] : double
)
```

## Arguments

x
1D array of any length (npts) containing the X coordinates of the points where interpolation is desired
y
1D array of length npts containing the Y coordinates of the points where interpolation is desired
z
1D array of length npts containing the Z coordinates of the points where interpolation is desired
u
1D array of length nptscontaining the functional values of the input data points. u(i) is the value of the input function at coordinate (x(i), y(i), z(i)) for i=1,npts.
xo
1D array of length m containing the X coordinates of the output data grid. The values in xo may be in any order and m can be equal to one.
yo
1D array of length m containing the Y coordinates of the output data grid. The values in yo may be in any order and m can be equal to one.
zo
1D array of length m containing the Z coordinates of the output data grid. The values in zo may be in any order and m can be equal to one.

## Description

Both the dspnt3s and dspnt3d functions interpolate 3D data at a list of specified points and return the results as a 1D float array dimensioned m.

dspnt3s is the single precision version and dspnt3d is the double precision version.

## Example

```begin

NUM = 1000
NX = 21
NY = 21
NZ = 21
RAND_MAX = 32767.0

xi = new((/NUM/),float)
yi = new((/NUM/),float)
zi = new((/NUM/),float)
u = new((/NUM/),float)

xo = new((/NX/),float)
yo = new((/NY/),float)
zo = new((/NZ/),float)
output = new((/NX,NY,NZ/),float)

xmin = -2.0
ymin = -2.0
zmin = -2.0
xmax =  2.0
ymax =  2.0
zmax =  2.0

;
; Create random data in three space and define a function.
;
rand1 = new((/NUM/),float)
rand2 = new((/NUM/),float)
rand3 = new((/NUM/),float)
srand(1)
do i=0,NUM-1
rand1(i) = rand
rand2(i) = rand
rand3(i) = rand
end do
xi = xmin+(xmax-xmin)*(rand1 / RAND_MAX)
yi = ymin+(ymax-ymin)*(rand2 / RAND_MAX)
zi = zmin+(zmax-zmin)*(rand3 / RAND_MAX)

u = xi*xi + yi*yi + zi*zi
;
; Create the output grid.
;
ii = fspan(0,20.,21)
xo = xmin + (ii/(NX-1)) * (xmax-xmin)
yo = ymin + (ii/(NY-1)) * (ymax-ymin)
zo = zmin + (ii/(NZ-1)) * (zmax-zmin)

do i=0,NX-1
do j=0,NY-1
do k=0,NZ-1
dspnt3s(xi, yi, zi, u, xo(i), yo(j), zo(k),output(i,j,k))
end do
end do
end do
end
```

### Reference Manual Control Panel

\$Revision: 1.6 \$ \$Date: 1998/11/11 23:32:16 \$