source: trunk/FACT++/erfa/src/fk5hz.c@ 20115

Last change on this file since 20115 was 18921, checked in by tbretz, 7 years ago
Updated to ERFA 1.4.0
File size: 6.5 KB
Line 
1#include "erfa.h"
2
3void eraFk5hz(double r5, double d5, double date1, double date2,
4 double *rh, double *dh)
5/*
6** - - - - - - - - -
7** e r a F k 5 h z
8** - - - - - - - - -
9**
10** Transform an FK5 (J2000.0) star position into the system of the
11** Hipparcos catalogue, assuming zero Hipparcos proper motion.
12**
13** Given:
14** r5 double FK5 RA (radians), equinox J2000.0, at date
15** d5 double FK5 Dec (radians), equinox J2000.0, at date
16** date1,date2 double TDB date (Notes 1,2)
17**
18** Returned:
19** rh double Hipparcos RA (radians)
20** dh double Hipparcos Dec (radians)
21**
22** Notes:
23**
24** 1) This function converts a star position from the FK5 system to
25** the Hipparcos system, in such a way that the Hipparcos proper
26** motion is zero. Because such a star has, in general, a non-zero
27** proper motion in the FK5 system, the function requires the date
28** at which the position in the FK5 system was determined.
29**
30** 2) The TT date date1+date2 is a Julian Date, apportioned in any
31** convenient way between the two arguments. For example,
32** JD(TT)=2450123.7 could be expressed in any of these ways,
33** among others:
34**
35** date1 date2
36**
37** 2450123.7 0.0 (JD method)
38** 2451545.0 -1421.3 (J2000 method)
39** 2400000.5 50123.2 (MJD method)
40** 2450123.5 0.2 (date & time method)
41**
42** The JD method is the most natural and convenient to use in
43** cases where the loss of several decimal digits of resolution
44** is acceptable. The J2000 method is best matched to the way
45** the argument is handled internally and will deliver the
46** optimum resolution. The MJD method and the date & time methods
47** are both good compromises between resolution and convenience.
48**
49** 3) The FK5 to Hipparcos transformation is modeled as a pure
50** rotation and spin; zonal errors in the FK5 catalogue are not
51** taken into account.
52**
53** 4) The position returned by this function is in the Hipparcos
54** reference system but at date date1+date2.
55**
56** 5) See also eraFk52h, eraH2fk5, eraHfk5z.
57**
58** Called:
59** eraS2c spherical coordinates to unit vector
60** eraFk5hip FK5 to Hipparcos rotation and spin
61** eraSxp multiply p-vector by scalar
62** eraRv2m r-vector to r-matrix
63** eraTrxp product of transpose of r-matrix and p-vector
64** eraPxp vector product of two p-vectors
65** eraC2s p-vector to spherical
66** eraAnp normalize angle into range 0 to 2pi
67**
68** Reference:
69**
70** F.Mignard & M.Froeschle, 2000, Astron.Astrophys. 354, 732-739.
71**
72** Copyright (C) 2013-2017, NumFOCUS Foundation.
73** Derived, with permission, from the SOFA library. See notes at end of file.
74*/
75{
76 double t, p5e[3], r5h[3][3], s5h[3], vst[3], rst[3][3], p5[3],
77 ph[3], w;
78
79
80/* Interval from given date to fundamental epoch J2000.0 (JY). */
81 t = - ((date1 - ERFA_DJ00) + date2) / ERFA_DJY;
82
83/* FK5 barycentric position vector. */
84 eraS2c(r5, d5, p5e);
85
86/* FK5 to Hipparcos orientation matrix and spin vector. */
87 eraFk5hip(r5h, s5h);
88
89/* Accumulated Hipparcos wrt FK5 spin over that interval. */
90 eraSxp(t, s5h, vst);
91
92/* Express the accumulated spin as a rotation matrix. */
93 eraRv2m(vst, rst);
94
95/* Derotate the vector's FK5 axes back to date. */
96 eraTrxp(rst, p5e, p5);
97
98/* Rotate the vector into the Hipparcos system. */
99 eraRxp(r5h, p5, ph);
100
101/* Hipparcos vector to spherical. */
102 eraC2s(ph, &w, dh);
103 *rh = eraAnp(w);
104
105 return;
106
107}
108/*----------------------------------------------------------------------
109**
110**
111** Copyright (C) 2013-2017, NumFOCUS Foundation.
112** All rights reserved.
113**
114** This library is derived, with permission, from the International
115** Astronomical Union's "Standards of Fundamental Astronomy" library,
116** available from http://www.iausofa.org.
117**
118** The ERFA version is intended to retain identical functionality to
119** the SOFA library, but made distinct through different function and
120** file names, as set out in the SOFA license conditions. The SOFA
121** original has a role as a reference standard for the IAU and IERS,
122** and consequently redistribution is permitted only in its unaltered
123** state. The ERFA version is not subject to this restriction and
124** therefore can be included in distributions which do not support the
125** concept of "read only" software.
126**
127** Although the intent is to replicate the SOFA API (other than
128** replacement of prefix names) and results (with the exception of
129** bugs; any that are discovered will be fixed), SOFA is not
130** responsible for any errors found in this version of the library.
131**
132** If you wish to acknowledge the SOFA heritage, please acknowledge
133** that you are using a library derived from SOFA, rather than SOFA
134** itself.
135**
136**
137** TERMS AND CONDITIONS
138**
139** Redistribution and use in source and binary forms, with or without
140** modification, are permitted provided that the following conditions
141** are met:
142**
143** 1 Redistributions of source code must retain the above copyright
144** notice, this list of conditions and the following disclaimer.
145**
146** 2 Redistributions in binary form must reproduce the above copyright
147** notice, this list of conditions and the following disclaimer in
148** the documentation and/or other materials provided with the
149** distribution.
150**
151** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
152** the International Astronomical Union nor the names of its
153** contributors may be used to endorse or promote products derived
154** from this software without specific prior written permission.
155**
156** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
157** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
158** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
159** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
160** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
161** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
162** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
163** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
164** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
165** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
166** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
167** POSSIBILITY OF SUCH DAMAGE.
168**
169*/
Note: See TracBrowser for help on using the repository browser.