
Routines that interpolate 2-d data at specified points. These routines are part of the Dsgrid package which implements a simple inverse distance weighted interpolation algorithm.
procedure dspnt2s(
x[*] : float,
y[*] : float,
z[*] : float,
xo[*] : float,
yo[*] : float
)
procedure dspnt2d(
x[*] : float,
y[*] : float,
z[*] : float,
xo[*] : float,
yo[*] : float
)
dspnt2s is the single precision version and dspnt2d is the double precision version.
begin
NUM = 171
NX = 21
NY = 21
RAND_MAX = 32767.0
xi = new((/NUM/),float)
yi = new((/NUM/),float)
zi = new((/NUM/),float)
xo = new((/NX/),float)
yo = new((/NY/),float)
output2 = new((/NX,NY/),float)
xminin = -0.2
yminin = -0.2
xmaxin = 1.2
ymaxin = 1.2
xminot = 0.0
yminot = 0.0
xmaxot = 1.0
ymaxot = 1.0
xeye = 1.3
yeye = -1.8
zeye = 3.6
;
; Create random data in three space and define a function.
;
rand1 = new((/NUM/),float)
rand2 = new((/NUM/),float)
srand(1)
do i=0,NUM-1
rand1(i) = rand
rand2(i) = rand
end do
xi = xminin+(xmaxin-xminin)*(rand1 / RAND_MAX)
yi = yminin+(ymaxin-yminin)*(rand2 / RAND_MAX)
zi = (xi-0.25)*(xi-0.25) + (yi-0.50)*(yi-0.50)
;
; Create the output grid.
;
ii = fspan(0.,NX-1,NX)
xo = xminot + ( ii / (NX-1)) * (xmaxot-xminot)
yo = yminot + ( ii / (NY-1)) * (ymaxot-yminot)
;
; Interpolate using both dsgrid2s and dspnt2s.
;
output1 = dsgrid2s(xi, yi, zi, xo, yo)
do i=0,NX-1
do j=0,NY-1
dspnt2s(xi, yi, zi, xo(i), yo(j), output2(i,j))
end do
end do
end
NG4.1 Home, Index, Examples, Glossary, Feedback, Ref Contents, Ref WhereAmI?