aboutsummaryrefslogtreecommitdiff
path: root/vo/votools/gasplib/ccgseq.x
blob: f0e071f3a6fcf8ed54583e4670bffd1fb55b5dcc (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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# CCGSEQ -- Routine for computing RA and Dec for a given X,Y pixel
#           position on a GSSS plate. 

procedure ccgseq (plate_centre_ra, plate_centre_dec, plate_centre_x,
     		  plate_centre_y, x_pixel_size, y_pixel_size,
     		  plate_scale, amd_x, amd_y, object_x, object_y,
     		  object_mag, object_col, object_ra, object_dec)

double	plate_centre_ra		#Plate Right Ascension (radians)
double	plate_centre_dec	#Plate Declination     (radians)
double	plate_centre_x		#Position used in soln.(microns)
double	plate_centre_y		# "
double	x_pixel_size		#Scan pixel size (microns)
double	y_pixel_size		# "
double	plate_scale		#Plate scale (arcsec/mm)
double	amd_x[20]		#Plate model coefficients
double	amd_y[20]		# "
double	object_x		#Pixel position for object
double	object_y		# "
double	object_mag		#Magnitude 
double	object_col		#Colour
double	object_ra		#Object RA (radians)	
double	object_dec		# "     Dec

double	x			#Position from centre (mm)
double	y			# "
double	xi_object		#Standard coords (arcsec)
double	eta_object		# "
double  p1,p2,p3,p4

begin
	# Convert x,y from pixels to mm measured from the plate centre

	x = (plate_centre_x - object_x * x_pixel_size) / 1000.0d0
	y = (object_y * y_pixel_size - plate_centre_y) / 1000.0d0

	# Compute standard coordinates from x,y and plate model coefficients

	p1 = 	  amd_x(1)	*x		       		+
     		  amd_x(2)	*y		       		+
     		  amd_x(3)			       		+
     		  amd_x(4)	*x**2		       		+
     		  amd_x(5)	*x*y		       		+
     		  amd_x(6)	*y**2		       		

        p2 = 	  amd_x(7)	*(x**2+y**2)	       		+
     		  amd_x(8)	*x**3    	       		+
     		  amd_x(9) 	*x**2*y		       		+
     		  amd_x(10)	*x*y**2		       		+
     		  amd_x(11)  	*y**3		       		

     	p3 = 	  amd_x(12)	*x*(x**2+y**2)	       		+
     		  amd_x(13)	*x*(x**2+y**2)**2  		+
     		  amd_x(14)	*object_mag			+
     		  amd_x(15)	*object_mag**2			+
     		  amd_x(16)	*object_mag**3			

     	p4 =	  amd_x(17)	*object_mag*x			+
     		  amd_x(18)	*object_mag*(x**2+y**2)	        +
     		  amd_x(19)	*object_mag*x*(x**2+y**2)	+
     		  amd_x(20)	*object_col

	xi_object = p1 + p2 + p3 + p4

	p1 =       amd_y(1)	*y		       		+
     		   amd_y(2)	*x		       		+
     		   amd_y(3)			       		+
     		   amd_y(4)	*y**2		       		+
     		   amd_y(5)	*x*y		       		+
     		   amd_y(6)	*x**2				

     	p2 = 	   amd_y(7)	*(x**2+y**2) 	 		+
     		   amd_y(8)	*y**3    	       		+
     		   amd_y(9) 	*y**2*x				+
     		   amd_y(10)	*y*x**2				+
     		   amd_y(11)  	*x**3				

     	p3 = 	   amd_y(12)	*y*(x**2+y**2)			+
     		   amd_y(13)	*y*(x**2+y**2)**2		+
     		   amd_y(14)	*object_mag			+
     		   amd_y(15)	*object_mag**2			+
     		   amd_y(16)	*object_mag**3			

     	p4 = 	   amd_y(17)	*object_mag*y			+
     		   amd_y(18)	*object_mag*(x**2+y**2)		+
     		   amd_y(19)	*object_mag*y*(x**2+y**2)	+
     		   amd_y(20)	*object_col  

	eta_object = p1 + p2 + p3 + p4

	call trsteq (plate_centre_ra, plate_centre_dec,
     	             xi_object, eta_object, object_ra, object_dec)

end