FACT++  1.0
icrs2g.c
Go to the documentation of this file.
1 #include "erfa.h"
2 
3 void eraIcrs2g ( double dr, double dd, double *dl, double *db )
4 /*
5 ** - - - - - - - - - -
6 ** e r a I c r s 2 g
7 ** - - - - - - - - - -
8 **
9 ** Transformation from ICRS to Galactic Coordinates.
10 **
11 ** Given:
12 ** dr double ICRS right ascension (radians)
13 ** dd double ICRS declination (radians)
14 **
15 ** Returned:
16 ** dl double galactic longitude (radians)
17 ** db double galactic latitude (radians)
18 **
19 ** Notes:
20 **
21 ** 1) The IAU 1958 system of Galactic coordinates was defined with
22 ** respect to the now obsolete reference system FK4 B1950.0. When
23 ** interpreting the system in a modern context, several factors have
24 ** to be taken into account:
25 **
26 ** . The inclusion in FK4 positions of the E-terms of aberration.
27 **
28 ** . The distortion of the FK4 proper motion system by differential
29 ** Galactic rotation.
30 **
31 ** . The use of the B1950.0 equinox rather than the now-standard
32 ** J2000.0.
33 **
34 ** . The frame bias between ICRS and the J2000.0 mean place system.
35 **
36 ** The Hipparcos Catalogue (Perryman & ESA 1997) provides a rotation
37 ** matrix that transforms directly between ICRS and Galactic
38 ** coordinates with the above factors taken into account. The
39 ** matrix is derived from three angles, namely the ICRS coordinates
40 ** of the Galactic pole and the longitude of the ascending node of
41 ** the galactic equator on the ICRS equator. They are given in
42 ** degrees to five decimal places and for canonical purposes are
43 ** regarded as exact. In the Hipparcos Catalogue the matrix
44 ** elements are given to 10 decimal places (about 20 microarcsec).
45 ** In the present ERFA function the matrix elements have been
46 ** recomputed from the canonical three angles and are given to 30
47 ** decimal places.
48 **
49 ** 2) The inverse transformation is performed by the function eraG2icrs.
50 **
51 ** Called:
52 ** eraAnp normalize angle into range 0 to 2pi
53 ** eraAnpm normalize angle into range +/- pi
54 ** eraS2c spherical coordinates to unit vector
55 ** eraRxp product of r-matrix and p-vector
56 ** eraC2s p-vector to spherical
57 **
58 ** Reference:
59 ** Perryman M.A.C. & ESA, 1997, ESA SP-1200, The Hipparcos and Tycho
60 ** catalogues. Astrometric and photometric star catalogues
61 ** derived from the ESA Hipparcos Space Astrometry Mission. ESA
62 ** Publications Division, Noordwijk, Netherlands.
63 **
64 ** Copyright (C) 2013-2015, NumFOCUS Foundation.
65 ** Derived, with permission, from the SOFA library. See notes at end of file.
66 */
67 {
68  double v1[3], v2[3];
69 
70 /*
71 ** L2,B2 system of galactic coordinates in the form presented in the
72 ** Hipparcos Catalogue. In degrees:
73 **
74 ** P = 192.85948 right ascension of the Galactic north pole in ICRS
75 ** Q = 27.12825 declination of the Galactic north pole in ICRS
76 ** R = 32.93192 longitude of the ascending node of the Galactic
77 ** plane on the ICRS equator
78 **
79 ** ICRS to galactic rotation matrix, obtained by computing
80 ** R_3(-R) R_1(pi/2-Q) R_3(pi/2+P) to the full precision shown:
81 */
82  double r[3][3] = { { -0.054875560416215368492398900454,
83  -0.873437090234885048760383168409,
84  -0.483835015548713226831774175116 },
85  { +0.494109427875583673525222371358,
86  -0.444829629960011178146614061616,
87  +0.746982244497218890527388004556 },
88  { -0.867666149019004701181616534570,
89  -0.198076373431201528180486091412,
90  +0.455983776175066922272100478348 } };
91 
92 
93 /* Spherical to Cartesian. */
94  eraS2c(dr, dd, v1);
95 
96 /* ICRS to Galactic. */
97  eraRxp(r, v1, v2);
98 
99 /* Cartesian to spherical. */
100  eraC2s(v2, dl, db);
101 
102 /* Express in conventional ranges. */
103  *dl = eraAnp(*dl);
104  *db = eraAnpm(*db);
105 
106 /* Finished. */
107 
108 }
109 /*----------------------------------------------------------------------
110 **
111 **
112 ** Copyright (C) 2013-2015, NumFOCUS Foundation.
113 ** All rights reserved.
114 **
115 ** This library is derived, with permission, from the International
116 ** Astronomical Union's "Standards of Fundamental Astronomy" library,
117 ** available from http://www.iausofa.org.
118 **
119 ** The ERFA version is intended to retain identical functionality to
120 ** the SOFA library, but made distinct through different function and
121 ** file names, as set out in the SOFA license conditions. The SOFA
122 ** original has a role as a reference standard for the IAU and IERS,
123 ** and consequently redistribution is permitted only in its unaltered
124 ** state. The ERFA version is not subject to this restriction and
125 ** therefore can be included in distributions which do not support the
126 ** concept of "read only" software.
127 **
128 ** Although the intent is to replicate the SOFA API (other than
129 ** replacement of prefix names) and results (with the exception of
130 ** bugs; any that are discovered will be fixed), SOFA is not
131 ** responsible for any errors found in this version of the library.
132 **
133 ** If you wish to acknowledge the SOFA heritage, please acknowledge
134 ** that you are using a library derived from SOFA, rather than SOFA
135 ** itself.
136 **
137 **
138 ** TERMS AND CONDITIONS
139 **
140 ** Redistribution and use in source and binary forms, with or without
141 ** modification, are permitted provided that the following conditions
142 ** are met:
143 **
144 ** 1 Redistributions of source code must retain the above copyright
145 ** notice, this list of conditions and the following disclaimer.
146 **
147 ** 2 Redistributions in binary form must reproduce the above copyright
148 ** notice, this list of conditions and the following disclaimer in
149 ** the documentation and/or other materials provided with the
150 ** distribution.
151 **
152 ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
153 ** the International Astronomical Union nor the names of its
154 ** contributors may be used to endorse or promote products derived
155 ** from this software without specific prior written permission.
156 **
157 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
158 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
159 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
160 ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
161 ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
162 ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
163 ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
164 ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
165 ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
166 ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
167 ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
168 ** POSSIBILITY OF SUCH DAMAGE.
169 **
170 */
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 eraRxp(double r[3][3], double p[3], double rp[3])
Definition: rxp.c:3
double eraAnpm(double a)
Definition: anpm.c:3
void eraIcrs2g(double dr, double dd, double *dl, double *db)
Definition: icrs2g.c:3
double eraAnp(double a)
Definition: anp.c:3