FACT++  1.0
palSupgal.c
Go to the documentation of this file.
1 /*
2 *+
3 * Name:
4 * palSupgal
5 
6 * Purpose:
7 * Convert from supergalactic to galactic coordinates
8 
9 * Language:
10 * Starlink ANSI C
11 
12 * Type of Module:
13 * Library routine
14 
15 * Invocation:
16 * void palSupgal ( double dsl, double dsb, double *dl, double *db );
17 
18 * Arguments:
19 * dsl = double (Given)
20 * Supergalactic longitude.
21 * dsb = double (Given)
22 * Supergalactic latitude.
23 * dl = double * (Returned)
24 * Galactic longitude.
25 * db = double * (Returned)
26 * Galactic latitude.
27 
28 * Description:
29 * Transformation from de Vaucouleurs supergalactic coordinates
30 * to IAU 1958 galactic coordinates
31 
32 * Authors:
33 * PTW: Pat Wallace (STFC)
34 * TIMJ: Tim Jenness (JAC, Hawaii)
35 * {enter_new_authors_here}
36 
37 * See Also:
38 * - de Vaucouleurs, de Vaucouleurs, & Corwin, Second Reference
39 * Catalogue of Bright Galaxies, U. Texas, page 8.
40 * - Systems & Applied Sciences Corp., Documentation for the
41 * machine-readable version of the above catalogue,
42 * Contract NAS 5-26490.
43 *
44 * (These two references give different values for the galactic
45 * longitude of the supergalactic origin. Both are wrong; the
46 * correct value is L2=137.37.)
47 
48 * History:
49 * 2012-02-12(TIMJ):
50 * Initial version with documentation taken from Fortran SLA
51 * Adapted with permission from the Fortran SLALIB library.
52 * {enter_further_changes_here}
53 
54 * Copyright:
55 * Copyright (C) 1995 Rutherford Appleton Laboratory
56 * Copyright (C) 2012 Science and Technology Facilities Council.
57 * All Rights Reserved.
58 
59 * Licence:
60 * This program is free software: you can redistribute it and/or
61 * modify it under the terms of the GNU Lesser General Public
62 * License as published by the Free Software Foundation, either
63 * version 3 of the License, or (at your option) any later
64 * version.
65 *
66 * This program is distributed in the hope that it will be useful,
67 * but WITHOUT ANY WARRANTY; without even the implied warranty of
68 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
69 * GNU Lesser General Public License for more details.
70 *
71 * You should have received a copy of the GNU Lesser General
72 * License along with this program. If not, see
73 * <http://www.gnu.org/licenses/>.
74 
75 * Bugs:
76 * {note_any_bugs_here}
77 *-
78 */
79 
80 #include "pal.h"
81 #include "pal1sofa.h"
82 
83 void palSupgal ( double dsl, double dsb, double *dl, double *db ) {
84 
85  double v1[3];
86  double v2[3];
87 
88 /*
89 * System of supergalactic coordinates:
90 *
91 * SGL SGB L2 B2 (deg)
92 * - +90 47.37 +6.32
93 * 0 0 - 0
94 *
95 * Galactic to supergalactic rotation matrix:
96 */
97  double rmat[3][3] = {
98  { -0.735742574804,+0.677261296414,+0.000000000000 },
99  { -0.074553778365,-0.080991471307,+0.993922590400 },
100  { +0.673145302109,+0.731271165817,+0.110081262225 }
101  };
102 
103  /* Spherical to Cartesian */
104  eraS2c( dsl, dsb, v1 );
105 
106  /* Supergalactic to galactic */
107  eraTrxp( rmat, v1, v2 );
108 
109  /* Cartesian to spherical */
110  eraC2s( v2, dl, db );
111 
112  /* Express in conventional ranges */
113  *dl = eraAnp( *dl );
114  *db = eraAnpm( *db );
115 
116 }
void palSupgal(double dsl, double dsb, double *dl, double *db)
Definition: palSupgal.c:83
void eraS2c(double theta, double phi, double c[3])
Definition: s2c.c:3
void eraC2s(double p[3], double *theta, double *phi)
Definition: c2s.c:3
void eraTrxp(double r[3][3], double p[3], double trp[3])
Definition: trxp.c:3
double eraAnpm(double a)
Definition: anpm.c:3
double eraAnp(double a)
Definition: anp.c:3