aboutsummaryrefslogtreecommitdiff
path: root/sys/vops/ak/agltc.x
blob: 4f87a8fcfe73e82cfd942e94981f441d8bbb5cc0 (plain) (blame)
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
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

# AGLT -- Given a list of ranges, replace the value of each input pixel
# which falls within a given range by applying the corresponding linear
# transformation (b = a * kmul + kadd).  If KMUL is identically zero,
# B is replaced by the constant KADD.

procedure agltc (a, b, npix, low, high, kmul, kadd, nrange)

char	a[ARB], b[ARB], pixval
int	npix, i
char	low[nrange], high[nrange]	# range limits
real	kmul[nrange], kadd[nrange]
int	nrange, nr

begin
	do i = 1, npix {
	    pixval = a[i]
	    b[i] = pixval
	    do nr = 1, nrange
		if (pixval >= low[nr] && pixval <= high[nr]) {
			if (kmul[nr] == 0.0)
			    b[i] = kadd[nr]
			else
			    b[i] = (pixval * kmul[nr]) + kadd[nr]
			break
		}
	}
end