aboutsummaryrefslogtreecommitdiff
path: root/pkg/images/immatch/src/xregister/rgxbckgrd.x
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /pkg/images/immatch/src/xregister/rgxbckgrd.x
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'pkg/images/immatch/src/xregister/rgxbckgrd.x')
-rw-r--r--pkg/images/immatch/src/xregister/rgxbckgrd.x63
1 files changed, 63 insertions, 0 deletions
diff --git a/pkg/images/immatch/src/xregister/rgxbckgrd.x b/pkg/images/immatch/src/xregister/rgxbckgrd.x
new file mode 100644
index 00000000..c9747ee6
--- /dev/null
+++ b/pkg/images/immatch/src/xregister/rgxbckgrd.x
@@ -0,0 +1,63 @@
+include <math/gsurfit.h>
+include "xregister.h"
+
+# RG_XSCALE -- Compute the background offset and x and y slope.
+
+procedure rg_xscale (xc, data, npts, nx, ny, offset, coeff)
+
+pointer xc #I pointer to the cross-correlation function
+real data[ARB] #I the input data
+int npts #I the number of points
+int nx, ny #I the dimensions of the original subraster
+real offset #I the input offset
+real coeff[ARB] #O the output coefficients
+
+int wborder
+pointer gs
+real loreject, hireject, zero
+int rg_xstati(), rg_znsum(), rg_znmedian(), rg_slope()
+real rg_xstatr()
+
+begin
+ loreject = rg_xstatr (xc, LOREJECT)
+ hireject = rg_xstatr (xc, HIREJECT)
+ wborder = rg_xstati (xc, BORDER)
+
+ switch (rg_xstati (xc, BACKGRD)) {
+ case XC_BNONE:
+ coeff[1] = offset
+ coeff[2] = 0.0
+ coeff[3] = 0.0
+ case XC_MEAN:
+ if (rg_znsum (data, npts, zero, loreject, hireject) <= 0)
+ zero = 0.0
+ coeff[1] = zero
+ coeff[2] = 0.0
+ coeff[3] = 0.0
+ case XC_MEDIAN:
+ if (rg_znmedian (data, npts, zero, loreject, hireject) <= 0)
+ zero = 0.0
+ coeff[1] = zero
+ coeff[2] = 0.0
+ coeff[3] = 0.0
+ case XC_SLOPE:
+ call gsinit (gs, GS_POLYNOMIAL, 2, 2, GS_XNONE, 1.0, real (nx), 1.0,
+ real (ny))
+ if (rg_slope (gs, data, npts, nx, ny, wborder, wborder, loreject,
+ hireject) == ERR) {
+ coeff[1] = 0.0
+ coeff[2] = 0.0
+ coeff[3] = 0.0
+ } else {
+ call gssave (gs, coeff)
+ coeff[1] = coeff[GS_SAVECOEFF+1]
+ coeff[2] = coeff[GS_SAVECOEFF+2]
+ coeff[3] = coeff[GS_SAVECOEFF+3]
+ }
+ call gsfree (gs)
+ default:
+ coeff[1] = offset
+ coeff[2] = 0.0
+ coeff[3] = 0.0
+ }
+end