summaryrefslogtreecommitdiffstats
path: root/ast/pal/palFk524.c
diff options
context:
space:
mode:
Diffstat (limited to 'ast/pal/palFk524.c')
-rw-r--r--ast/pal/palFk524.c259
1 files changed, 0 insertions, 259 deletions
diff --git a/ast/pal/palFk524.c b/ast/pal/palFk524.c
deleted file mode 100644
index 7a297e6..0000000
--- a/ast/pal/palFk524.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
-*+
-* Name:
-* palFk524
-
-* Purpose:
-* Convert J2000.0 FK5 star data to B1950.0 FK4.
-
-* Language:
-* Starlink ANSI C
-
-* Type of Module:
-* Library routine
-
-* Invocation:
-* palFk524( double r2000, double d2000, double dr2000, double dd2000,
-* double p2000, double v2000, double *r1950, double *d1950,
-* double *dr1950, double *dd1950, double *p1950, double *v1950 )
-
-* Arguments:
-* r2000 = double (Given)
-* J2000.0 FK5 RA (radians).
-* d2000 = double (Given)
-* J2000.0 FK5 Dec (radians).
-* dr2000 = double (Given)
-* J2000.0 FK5 RA proper motion (rad/Jul.yr)
-* dd2000 = double (Given)
-* J2000.0 FK5 Dec proper motion (rad/Jul.yr)
-* p2000 = double (Given)
-* J2000.0 FK5 parallax (arcsec)
-* v2000 = double (Given)
-* J2000.0 FK5 radial velocity (km/s, +ve = moving away)
-* r1950 = double * (Returned)
-* B1950.0 FK4 RA (radians).
-* d1950 = double * (Returned)
-* B1950.0 FK4 Dec (radians).
-* dr1950 = double * (Returned)
-* B1950.0 FK4 RA proper motion (rad/Jul.yr)
-* dd1950 = double * (Returned)
-* B1950.0 FK4 Dec proper motion (rad/Jul.yr)
-* p1950 = double * (Returned)
-* B1950.0 FK4 parallax (arcsec)
-* v1950 = double * (Returned)
-* B1950.0 FK4 radial velocity (km/s, +ve = moving away)
-
-* Description:
-* This function converts stars from the IAU 1976, FK5, Fricke
-* system, to the Bessel-Newcomb, FK4 system. The precepts
-* of Smith et al (Ref 1) are followed, using the implementation
-* by Yallop et al (Ref 2) of a matrix method due to Standish.
-* Kinoshita's development of Andoyer's post-Newcomb precession is
-* used. The numerical constants from Seidelmann et al (Ref 3) are
-* used canonically.
-
-* Notes:
-* - The proper motions in RA are dRA/dt rather than
-* cos(Dec)*dRA/dt, and are per year rather than per century.
-* - Note that conversion from Julian epoch 2000.0 to Besselian
-* epoch 1950.0 only is provided for. Conversions involving
-* other epochs will require use of the appropriate precession,
-* proper motion, and E-terms routines before and/or after
-* FK524 is called.
-* - In the FK4 catalogue the proper motions of stars within
-* 10 degrees of the poles do not embody the differential
-* E-term effect and should, strictly speaking, be handled
-* in a different manner from stars outside these regions.
-* However, given the general lack of homogeneity of the star
-* data available for routine astrometry, the difficulties of
-* handling positions that may have been determined from
-* astrometric fields spanning the polar and non-polar regions,
-* the likelihood that the differential E-terms effect was not
-* taken into account when allowing for proper motion in past
-* astrometry, and the undesirability of a discontinuity in
-* the algorithm, the decision has been made in this routine to
-* include the effect of differential E-terms on the proper
-* motions for all stars, whether polar or not. At epoch 2000,
-* and measuring on the sky rather than in terms of dRA, the
-* errors resulting from this simplification are less than
-* 1 milliarcsecond in position and 1 milliarcsecond per
-* century in proper motion.
-*
-* References:
-* - Smith, C.A. et al, 1989. "The transformation of astrometric
-* catalog systems to the equinox J2000.0". Astron.J. 97, 265.
-* - Yallop, B.D. et al, 1989. "Transformation of mean star places
-* from FK4 B1950.0 to FK5 J2000.0 using matrices in 6-space".
-* Astron.J. 97, 274.
-* - Seidelmann, P.K. (ed), 1992. "Explanatory Supplement to
-* the Astronomical Almanac", ISBN 0-935702-68-7.
-
-* Authors:
-* PTW: Pat Wallace (STFC)
-* DSB: David Berry (JAC, Hawaii)
-* {enter_new_authors_here}
-
-* History:
-* 2012-02-13 (DSB):
-* Initial version with documentation taken from Fortran SLA
-* Adapted with permission from the Fortran SLALIB library.
-* {enter_further_changes_here}
-
-* Copyright:
-* Copyright (C) 1995 Rutherford Appleton Laboratory
-* Copyright (C) 2012 Science and Technology Facilities Council.
-* All Rights Reserved.
-
-* Licence:
-* This program is free software: you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation, either
-* version 3 of the License, or (at your option) any later
-* version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-* GNU Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General
-* License along with this program. If not, see
-* <http://www.gnu.org/licenses/>.
-
-* Bugs:
-* {note_any_bugs_here}
-*-
-*/
-
-#include "pal.h"
-#include "palmac.h"
-#include "math.h"
-
-void palFk524( double r2000, double d2000, double dr2000, double dd2000,
- double p2000, double v2000, double *r1950, double *d1950,
- double *dr1950, double *dd1950, double *p1950, double *v1950 ){
-
-/* Local Variables; */
- double r, d, ur, ud, px, rv;
- double sr, cr, sd, cd, x, y, z, w;
- double v1[ 6 ], v2[ 6 ];
- double xd, yd, zd;
- double rxyz, wd, rxysq, rxy;
- int i, j;
-
-/* Small number to avoid arithmetic problems. */
- static const double tiny = 1.0-30;
-
-/* Canonical constants (see references). Constant vector and matrix. */
- double a[ 6 ] = { -1.62557E-6, -0.31919E-6, -0.13843E-6,
- +1.245E-3, -1.580E-3, -0.659E-3 };
- double emi[ 6 ][ 6 ] = {
- { 0.9999256795, 0.0111814828, 0.0048590039,
- -0.00000242389840, -0.00000002710544, -0.00000001177742},
- {-0.0111814828, 0.9999374849, -0.0000271771,
- 0.00000002710544, -0.00000242392702, 0.00000000006585 },
- {-0.0048590040, -0.0000271557, 0.9999881946,
- 0.00000001177742, 0.00000000006585, -0.00000242404995 },
- {-0.000551, 0.238509, -0.435614,
- 0.99990432, 0.01118145, 0.00485852 },
- {-0.238560, -0.002667, 0.012254,
- -0.01118145, 0.99991613, -0.00002717},
- { 0.435730, -0.008541, 0.002117,
- -0.00485852, -0.00002716, 0.99996684 } };
-
-/* Pick up J2000 data (units radians and arcsec/JC). */
- r = r2000;
- d = d2000;
- ur = dr2000*PAL__PMF;
- ud = dd2000*PAL__PMF;
- px = p2000;
- rv = v2000;
-
-/* Spherical to Cartesian. */
- sr = sin( r );
- cr = cos( r );
- sd = sin( d );
- cd = cos( d );
-
- x = cr*cd;
- y = sr*cd;
- z = sd;
-
- w = PAL__VF*rv*px;
-
- v1[ 0 ] = x;
- v1[ 1 ] = y;
- v1[ 2 ] = z;
-
- v1[ 3 ] = -ur*y - cr*sd*ud + w*x;
- v1[ 4 ] = ur*x - sr*sd*ud + w*y;
- v1[ 5 ] = cd*ud + w*z;
-
-/* Convert position+velocity vector to BN system. */
- for( i = 0; i < 6; i++ ) {
- w = 0.0;
- for( j = 0; j < 6; j++ ) {
- w += emi[ i ][ j ]*v1[ j ];
- }
- v2[ i ] = w;
- }
-
-/* Position vector components and magnitude. */
- x = v2[ 0 ];
- y = v2[ 1 ];
- z = v2[ 2 ];
- rxyz = sqrt( x*x + y*y + z*z );
-
-/* Apply E-terms to position. */
- w = x*a[ 0 ] + y*a[ 1 ] + z*a[ 2 ];
- x += a[ 0 ]*rxyz - w*x;
- y += a[ 1 ]*rxyz - w*y;
- z += a[ 2 ]*rxyz - w*z;
-
-/* Recompute magnitude. */
- rxyz = sqrt( x*x + y*y + z*z );
-
-/* Apply E-terms to both position and velocity. */
- x = v2[ 0 ];
- y = v2[ 1 ];
- z = v2[ 2 ];
- w = x*a[ 0 ] + y*a[ 1 ] + z*a[ 2 ];
- wd = x*a[ 3 ] + y*a[ 4 ] + z*a[ 5 ];
- x += a[ 0 ]*rxyz - w*x;
- y += a[ 1 ]*rxyz - w*y;
- z += a[ 2 ]*rxyz - w*z;
- xd = v2[ 3 ] + a[ 3 ]*rxyz - wd*x;
- yd = v2[ 4 ] + a[ 4 ]*rxyz - wd*y;
- zd = v2[ 5 ] + a[ 5 ]*rxyz - wd*z;
-
-/* Convert to spherical. */
- rxysq = x*x + y*y;
- rxy = sqrt( rxysq );
-
- if( x == 0.0 && y == 0.0 ) {
- r = 0.0;
- } else {
- r = atan2( y, x );
- if( r < 0.0 ) r += PAL__D2PI;
- }
- d = atan2( z, rxy );
-
- if( rxy > tiny ) {
- ur = ( x*yd - y*xd )/rxysq;
- ud = ( zd*rxysq - z*( x*xd + y*yd ) )/( ( rxysq + z*z )*rxy );
- }
-
-/* Radial velocity and parallax. */
- if( px > tiny ) {
- rv = ( x*xd + y*yd + z*zd )/( px*PAL__VF*rxyz );
- px /= rxyz;
- }
-
-/* Return results. */
- *r1950 = r;
- *d1950 = d;
- *dr1950 = ur/PAL__PMF;
- *dd1950 = ud/PAL__PMF;
- *p1950 = px;
- *v1950 = rv;
-}