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
|
# Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
include <imhdr.h>
include <imio.h>
# IMSSLV -- Given two vectors (VS, VE) defining the starting and ending
# physical coordinates of the two pixels defining an image section,
# initialize the "loop index" vector V, and the "loop increment" vector,
# VINC. Compute NPIX, the number of pixels in a line segment.
procedure imsslv (im, vs, ve, v, vinc, npix)
pointer im
long vs[IM_MAXDIM], ve[IM_MAXDIM]
long v[IM_MAXDIM], vinc[IM_MAXDIM], npix, step
int i
begin
# Determine the direction in which each dimension is to be
# traversed.
do i = 1, IM_NPHYSDIM(im) {
step = abs (IM_VSTEP(im,i))
if (vs[i] <= ve[i])
vinc[i] = step
else
vinc[i] = -step
}
# Initialize the extraction vector (passed to IMRDS? to read a
# contiguous array of pixels). Compute the length of a line,
# allowing for decimation by the step size.
do i = 1, IM_NPHYSDIM(im)
v[i] = vs[i]
if (vs[1] > ve[1])
v[1] = ve[1]
npix = (ve[1] - vs[1]) / vinc[1] + 1
end
|