File: msieval.x

package info (click to toggle)
iraf 2.18.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 86,000 kB
  • sloc: ansic: 115,890; fortran: 74,576; lisp: 18,888; yacc: 5,642; sh: 961; lex: 596; makefile: 509; asm: 159; csh: 54; xml: 33; sed: 4
file content (74 lines) | stat: -rw-r--r-- 2,349 bytes parent folder | download | duplicates (6)
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
68
69
70
71
72
73
74
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

include "im2interpdef.h"
include <math/iminterp.h>

# MSIEVAL -- Procedure to evaluate the interpolant at a single point.
# The procedure assumes that 1 <= x <= nxpix and that 1 <= y <= nypix.
# Checking for out of bounds pixels is the responsibility of the calling
# program.

real procedure msieval (msi, x, y)

pointer	msi		# pointer to the interpolant descriptor
real	x[ARB]		# x data value
real	y[ARB]		# y data value

real	value

begin
	switch (MSI_TYPE(msi)) {

	case II_BINEAREST:
	    call ii_binearest (COEFF(MSI_COEFF(msi)), MSI_FSTPNT(msi),
	        MSI_NXCOEFF(msi), x, y, value, 1)
	    return (value)

	case II_BILINEAR:
	    call ii_bilinear (COEFF(MSI_COEFF(msi)), MSI_FSTPNT(msi),
	        MSI_NXCOEFF(msi), x, y, value, 1)
	    return (value)

	case II_BIPOLY3:
	    call ii_bipoly3 (COEFF(MSI_COEFF(msi)), MSI_FSTPNT(msi),
	        MSI_NXCOEFF(msi), x, y, value, 1)
	    return (value)

	case II_BIPOLY5:
	    call ii_bipoly5 (COEFF(MSI_COEFF(msi)), MSI_FSTPNT(msi),
	        MSI_NXCOEFF(msi), x, y, value, 1)
	    return (value)

	case II_BISPLINE3:
	    call ii_bispline3 (COEFF(MSI_COEFF(msi)), MSI_FSTPNT(msi),
	        MSI_NXCOEFF(msi), x, y, value, 1)
	    return (value)

	case II_BISINC:
	    call ii_bisinc (COEFF(MSI_COEFF(msi)), MSI_FSTPNT(msi),
	        MSI_NXCOEFF(msi), MSI_NYCOEFF(msi), x, y, value, 1,
		MSI_NSINC(msi), DX, DY)
	    return (value)

	case II_BILSINC:
	    call ii_bilsinc (COEFF(MSI_COEFF(msi)), MSI_FSTPNT(msi),
	        MSI_NXCOEFF(msi), MSI_NYCOEFF(msi), x, y, value, 1,
		LTABLE(MSI_LTABLE(msi)), 2 * MSI_NSINC(msi) + 1,
		MSI_NXINCR(msi), MSI_NYINCR(msi), DX, DY)
	    return (value)

	case II_BIDRIZZLE:
	    if (MSI_XPIXFRAC(msi) >= 1.0 && MSI_YPIXFRAC(msi) >= 1.0) 
	        call ii_bidriz1 (COEFF(MSI_COEFF(msi)), MSI_FSTPNT(msi),
	            MSI_NXCOEFF(msi), x, y, value, 1, MSI_BADVAL(msi))
	    #else if (MSI_XPIXFRAC(msi) <= 0.0 && MSI_YPIXFRAC(msi) <= 0.0) 
	        #call ii_bidriz0 (COEFF(MSI_COEFF(msi)), MSI_FSTPNT(msi),
	            #MSI_NXCOEFF(msi), x, y, value, 1, MSI_BADVAL(msi))
	    else
	        call ii_bidriz (COEFF(MSI_COEFF(msi)), MSI_FSTPNT(msi),
	            MSI_NXCOEFF(msi), x, y, value, 1, MSI_XPIXFRAC(msi),
		    MSI_YPIXFRAC(msi), MSI_BADVAL(msi))
	    return (value)

	}
end