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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
include <math/iminterp.h>
include "im1interpdef.h"
# ASIEVAL -- This procedure finds the interpolated value assuming that
# x lands in the array, i.e. 1 <= x <= npts.
real procedure asieval (asi, x)
pointer asi # interpolator descriptor
real x[ARB] # x value
real value
begin
switch (ASI_TYPE(asi)) { # switch on interpolator type
case II_NEAREST:
call ii_nearest (x, value, 1,
COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
return (value)
case II_LINEAR:
call ii_linear (x, value, 1,
COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
return (value)
case II_POLY3:
call ii_poly3 (x, value, 1, COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
return (value)
case II_POLY5:
call ii_poly5 (x, value, 1, COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
return (value)
case II_SPLINE3:
call ii_spline3 (x, value, 1,
COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
return (value)
case II_SINC:
call ii_sinc (x, value, 1,
COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)), ASI_NCOEFF(asi),
ASI_NSINC(asi), DX)
return (value)
case II_LSINC:
call ii_lsinc (x, value, 1,
COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)), ASI_NCOEFF(asi),
LTABLE(ASI_LTABLE(asi)), 2 * ASI_NSINC(asi) + 1,
ASI_NINCR(asi), DX)
return (value)
case II_DRIZZLE:
if (ASI_PIXFRAC(asi) >= 1.0)
call ii_driz1 (x, value, 1, COEFF(ASI_COEFF(asi) +
ASI_OFFSET(asi)), ASI_BADVAL(asi))
else
call ii_driz (x, value, 1, COEFF(ASI_COEFF(asi) +
ASI_OFFSET(asi)), ASI_PIXFRAC(asi), ASI_BADVAL(asi))
return (value)
default:
call error (0, "ASIEVAL: Unknown interpolator type.")
}
end
|