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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# This routine was copied from stsdas$pkg/asnalysis/gasp/gasplib/. See
# stsdas$copyright.stsdas for copyright restrictions.
#
include <math.h>
define ARCSEC_PER_RADIAN 206264.8062470964d0
# TRSTEQ -- Procedure to compute the RA and DEC from the standard coordinates
# given the plate centre.
procedure trsteq (plate_centre_ra, plate_centre_dec, xi, eta, ra, dec)
double plate_centre_ra #I plate center ra (radians)
double plate_centre_dec #I plate center dec (radians)
double xi #I xi standard coordinate (arcsec)
double eta #I eta standard coordinate (arcsec)
double ra #O ra (radians)
double dec #O dec (radians)
#double object_xi, object_eta, numerator, denominator
double object_xi, object_eta, x, y, z
begin
# Convert from arcseconds to radians.
object_xi = xi/ARCSEC_PER_RADIAN
object_eta = eta/ARCSEC_PER_RADIAN
# Convert to RA and Dec
x = cos (plate_centre_dec) - object_eta * sin (plate_centre_dec)
y = object_xi
z = sin (plate_centre_dec) + object_eta * cos (plate_centre_dec)
if (x == 0.0d0 && y == 0.0d0)
ra = 0.0d0
else
ra = atan2 (y, x)
dec = atan2 (z, sqrt (x * x + y * y))
ra = ra + plate_centre_ra
if (ra < 0.0d0)
ra = ra + DTWOPI
else if (ra > DTWOPI)
ra = ra - DTWOPI
## numerator = object_xi / dcos(plate_centre_dec)
# numerator = object_xi
#
## denominator = 1.0d0 - object_eta * dtan(plate_centre_dec)
# denominator = cos (plate_centre_dec) -
# object_eta * sin (plate_centre_dec)
# ra = atan2 (numerator,denominator) + plate_centre_ra
# if (ra < 0.0d0)
# ra = ra + DTWOPI
# else if (ra > DTWOPI)
# ra = ra - DTWOPI
#
## numerator = dcos(ra-plate_centre_ra) *
## (object_eta + dtan(plate_centre_dec))
# numerator = cos (ra - plate_centre_ra) *
# (cos (plate_centre_dec) * object_eta + sin (plate_centre_dec))
## denominator = 1.0d0 - object_eta * dtan(plate_centre_dec)
# denominator = cos (plate_centre_dec) - object_eta *
# sin (plate_centre_dec)
# dec = atan2 (numerator, denominator)
end
|