aboutsummaryrefslogtreecommitdiff
path: root/sys/vops/amap.gx
blob: 9006b221ba6146d2818923248e281b403860c1d6 (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
30
31
32
33
34
35
36
37
38
39
40
41
42
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.

# AMAP -- Vector linear transformation.  Map the range of pixel values
# a1,a2 from a into the range b1,b2 in b.  It is assumed that a1 < a2
# and b1 < b2.

procedure amap$t (a, b, npix, a1, a2, b1, b2)

PIXEL	a[ARB], b[ARB]
PIXEL	a1, a2, b1, b2

$if (datatype == sil)
long	minout, maxout, aoff, boff, pixval
$else
PIXEL	minout, maxout, aoff, boff, pixval
$endif

$if (datatype == ld)
double	scalar
$else
real	scalar
$endif

int	npix, i

begin
	$if (datatype == ld)
	    scalar = (double (b2) - double (b1)) / (double (a2) - double (a1))
	$else
	    scalar = (real (b2) - real (b1)) / (real (a2) - real (a1))
	$endif

	minout = min (b1, b2)
	maxout = max (b1, b2)
	aoff = a1
	boff = b1

	do i = 1, npix {
	    pixval = (a[i] - aoff) * scalar
	    b[i] = max(minout, min(maxout, pixval + boff))
	}
end