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
|
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
include <math/iminterp.h>
include "im1interpdef.h"
# ASIVECTOR -- Procedure to evaluate the interpolant at an array of ordered
# points assuming that all points land in 1 <= x <= npts.
procedure asivector (asi, x, y, npix)
pointer asi # interpolator descriptor
real x[ARB] # ordered x array
real y[ARB] # interpolated values
int npix # number of points in x
begin
switch (ASI_TYPE(asi)) {
case II_NEAREST:
call ii_nearest (x, y, npix,
COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
case II_LINEAR:
call ii_linear (x, y, npix, COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
case II_POLY3:
call ii_poly3 (x, y, npix, COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
case II_POLY5:
call ii_poly5 (x, y, npix, COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)))
case II_SPLINE3:
call ii_spline3 (x, y, npix, COEFF(ASI_COEFF(asi) +
ASI_OFFSET(asi)))
case II_SINC:
call ii_sinc (x, y, npix, COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)),
ASI_NCOEFF(asi), ASI_NSINC(asi), DX)
case II_LSINC:
call ii_lsinc (x, y, npix, COEFF(ASI_COEFF(asi) + ASI_OFFSET(asi)),
ASI_NCOEFF(asi), LTABLE(ASI_LTABLE(asi)),
2 * ASI_NSINC(asi) + 1, ASI_NINCR(asi), DX)
case II_DRIZZLE:
if (ASI_PIXFRAC(asi) >= 1.0)
call ii_driz1 (x, y, npix, COEFF(ASI_COEFF(asi) +
ASI_OFFSET(asi)), ASI_BADVAL(asi))
else
call ii_driz (x, y, npix, COEFF(ASI_COEFF(asi) +
ASI_OFFSET(asi)), ASI_PIXFRAC(asi), ASI_BADVAL(asi))
default:
call error (0, "ASIVECTOR: Unknown interpolator type.")
}
end
|