| 1 | #include "slalib.h" | 
|---|
| 2 | #include "slamac.h" | 
|---|
| 3 | void slaPm ( double r0, double d0, double pr, double pd, | 
|---|
| 4 | double px, double rv, double ep0, double ep1, | 
|---|
| 5 | double *r1, double *d1 ) | 
|---|
| 6 | /* | 
|---|
| 7 | **  - - - - - - | 
|---|
| 8 | **   s l a P m | 
|---|
| 9 | **  - - - - - - | 
|---|
| 10 | ** | 
|---|
| 11 | **  Apply corrections for proper motion to a star RA,Dec. | 
|---|
| 12 | ** | 
|---|
| 13 | **  (double precision) | 
|---|
| 14 | ** | 
|---|
| 15 | **  References: | 
|---|
| 16 | **     1984 Astronomical Almanac, pp B39-B41. | 
|---|
| 17 | **     (also Lederle & Schwan, Astron. Astrophys. 134, 1-6, 1984) | 
|---|
| 18 | ** | 
|---|
| 19 | **  Given: | 
|---|
| 20 | **     r0,d0    double     RA,Dec at epoch ep0 (rad) | 
|---|
| 21 | **     pr,pd    double     proper motions:  RA,Dec changes per year of epoch | 
|---|
| 22 | **     px       double     parallax (arcsec) | 
|---|
| 23 | **     rv       double     radial velocity (km/sec, +ve if receding) | 
|---|
| 24 | **     ep0      double     start epoch in years (e.g Julian epoch) | 
|---|
| 25 | **     ep1      double     end epoch in years (same system as ep0) | 
|---|
| 26 | ** | 
|---|
| 27 | **  Returned: | 
|---|
| 28 | **     *r1,*d1  double     RA,Dec at epoch ep1 (rad) | 
|---|
| 29 | ** | 
|---|
| 30 | **  Notes: | 
|---|
| 31 | ** | 
|---|
| 32 | **  1  The proper motions in RA are dRA/dt rather than cos(Dec)*dRA/dt, | 
|---|
| 33 | **     and are in the same coordinate system as R0,D0. | 
|---|
| 34 | ** | 
|---|
| 35 | **  2  If the available proper motions are pre-FK5 they will be per | 
|---|
| 36 | **     tropical year rather than per Julian year, and so the epochs | 
|---|
| 37 | **     must both be Besselian rather than Julian.  In such cases, a | 
|---|
| 38 | **     scaling factor of 365.2422D0/365.25D0 should be applied to the | 
|---|
| 39 | **     radial velocity before use. | 
|---|
| 40 | ** | 
|---|
| 41 | **  Called:  slaDcs2c, slaDcc2s, slaDranrm | 
|---|
| 42 | ** | 
|---|
| 43 | **  Defined in slamac.h:  DAS2R | 
|---|
| 44 | ** | 
|---|
| 45 | **  Last revision:   19 January 2000 | 
|---|
| 46 | ** | 
|---|
| 47 | **  Copyright P.T.Wallace.  All rights reserved. | 
|---|
| 48 | */ | 
|---|
| 49 | { | 
|---|
| 50 | /* Km/s to AU/year multiplied by arc seconds to radians */ | 
|---|
| 51 | static double vfr = ( 365.25 * 86400.0 / 149597870.0 ) * DAS2R; | 
|---|
| 52 |  | 
|---|
| 53 | int i; | 
|---|
| 54 | double w, em[3], t, p[3]; | 
|---|
| 55 |  | 
|---|
| 56 | /* Spherical to Cartesian */ | 
|---|
| 57 | slaDcs2c ( r0, d0, p ); | 
|---|
| 58 |  | 
|---|
| 59 | /* Space motion (radians per year) */ | 
|---|
| 60 | w = vfr * rv * px; | 
|---|
| 61 | em[0] = - pr * p[1] - pd * cos ( r0 ) * sin ( d0 ) + w * p[0]; | 
|---|
| 62 | em[1] =   pr * p[0] - pd * sin ( r0 ) * sin ( d0 ) + w * p[1]; | 
|---|
| 63 | em[2] =               pd * cos ( d0 )              + w * p[2]; | 
|---|
| 64 |  | 
|---|
| 65 | /* Apply the motion */ | 
|---|
| 66 | t = ep1 - ep0; | 
|---|
| 67 | for ( i = 0; i < 3; i++ ) | 
|---|
| 68 | p[i] = p[i] + (t * em[i]); | 
|---|
| 69 |  | 
|---|
| 70 | /* Cartesian to spherical */ | 
|---|
| 71 | slaDcc2s ( p, r1, d1 ); | 
|---|
| 72 | *r1 = slaDranrm ( *r1 ); | 
|---|
| 73 | } | 
|---|