aboutsummaryrefslogtreecommitdiff
path: root/sys/mwcs/gen/mwv1trand.x
blob: 3c3ac12465b5833563d3d9d1bf2c23cf65138021 (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
include	"../mwcs.h"

# MW_V1TRAN -- Optimized 1D coordinate transformation for an array of points.

procedure mw_v1trand (a_ct, x1, x2, npts)

pointer	a_ct			#I pointer to CTRAN descriptor
double	x1[ARB]			#I coordinates in input system
double	x2[ARB]			#O coordinates in output system
int	npts

int	i
pointer	ct
double	scale, offset
errchk	mw_ctrand

begin
	# Get real or double version of descriptor.
	ct = CT_D(a_ct)

	scale  = Memd[CT_LTM(ct)]
	offset = Memd[CT_LTV(ct)]

	# Perform the transformation; case LNR is a simple linear transform.
	if (CT_TYPE(ct) == LNR) {
	    do i = 1, npts
		x2[i] = scale * x1[i] + offset
	} else {
	    do i = 1, npts
		call mw_ctrand (a_ct, x1[i], x2[i], 1)
	}
end