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
|