| 1 | #ifndef ERFAHDEF
|
|---|
| 2 | #define ERFAHDEF
|
|---|
| 3 |
|
|---|
| 4 | /*
|
|---|
| 5 | ** - - - - - - -
|
|---|
| 6 | ** e r f a . h
|
|---|
| 7 | ** - - - - - - -
|
|---|
| 8 | **
|
|---|
| 9 | ** Prototype function declarations for ERFA library.
|
|---|
| 10 | **
|
|---|
| 11 | ** Copyright (C) 2013-2016, NumFOCUS Foundation.
|
|---|
| 12 | ** Derived, with permission, from the SOFA library. See notes at end of file.
|
|---|
| 13 | */
|
|---|
| 14 |
|
|---|
| 15 | #include "erfam.h"
|
|---|
| 16 | #include "math.h"
|
|---|
| 17 |
|
|---|
| 18 | #ifdef __cplusplus
|
|---|
| 19 | extern "C" {
|
|---|
| 20 | #endif
|
|---|
| 21 |
|
|---|
| 22 | /* Astronomy/Calendars */
|
|---|
| 23 | int eraCal2jd(int iy, int im, int id, double *djm0, double *djm);
|
|---|
| 24 | double eraEpb(double dj1, double dj2);
|
|---|
| 25 | void eraEpb2jd(double epb, double *djm0, double *djm);
|
|---|
| 26 | double eraEpj(double dj1, double dj2);
|
|---|
| 27 | void eraEpj2jd(double epj, double *djm0, double *djm);
|
|---|
| 28 | int eraJd2cal(double dj1, double dj2,
|
|---|
| 29 | int *iy, int *im, int *id, double *fd);
|
|---|
| 30 | int eraJdcalf(int ndp, double dj1, double dj2, int iymdf[4]);
|
|---|
| 31 |
|
|---|
| 32 | /* Astronomy/Astrometry */
|
|---|
| 33 | void eraAb(double pnat[3], double v[3], double s, double bm1,
|
|---|
| 34 | double ppr[3]);
|
|---|
| 35 | void eraApcg(double date1, double date2,
|
|---|
| 36 | double ebpv[2][3], double ehp[3],
|
|---|
| 37 | eraASTROM *astrom);
|
|---|
| 38 | void eraApcg13(double date1, double date2, eraASTROM *astrom);
|
|---|
| 39 | void eraApci(double date1, double date2,
|
|---|
| 40 | double ebpv[2][3], double ehp[3],
|
|---|
| 41 | double x, double y, double s,
|
|---|
| 42 | eraASTROM *astrom);
|
|---|
| 43 | void eraApci13(double date1, double date2,
|
|---|
| 44 | eraASTROM *astrom, double *eo);
|
|---|
| 45 | void eraApco(double date1, double date2,
|
|---|
| 46 | double ebpv[2][3], double ehp[3],
|
|---|
| 47 | double x, double y, double s, double theta,
|
|---|
| 48 | double elong, double phi, double hm,
|
|---|
| 49 | double xp, double yp, double sp,
|
|---|
| 50 | double refa, double refb,
|
|---|
| 51 | eraASTROM *astrom);
|
|---|
| 52 | int eraApco13(double utc1, double utc2, double dut1,
|
|---|
| 53 | double elong, double phi, double hm, double xp, double yp,
|
|---|
| 54 | double phpa, double tc, double rh, double wl,
|
|---|
| 55 | eraASTROM *astrom, double *eo);
|
|---|
| 56 | void eraApcs(double date1, double date2, double pv[2][3],
|
|---|
| 57 | double ebpv[2][3], double ehp[3],
|
|---|
| 58 | eraASTROM *astrom);
|
|---|
| 59 | void eraApcs13(double date1, double date2, double pv[2][3],
|
|---|
| 60 | eraASTROM *astrom);
|
|---|
| 61 | void eraAper(double theta, eraASTROM *astrom);
|
|---|
| 62 | void eraAper13(double ut11, double ut12, eraASTROM *astrom);
|
|---|
| 63 | void eraApio(double sp, double theta,
|
|---|
| 64 | double elong, double phi, double hm, double xp, double yp,
|
|---|
| 65 | double refa, double refb,
|
|---|
| 66 | eraASTROM *astrom);
|
|---|
| 67 | int eraApio13(double utc1, double utc2, double dut1,
|
|---|
| 68 | double elong, double phi, double hm, double xp, double yp,
|
|---|
| 69 | double phpa, double tc, double rh, double wl,
|
|---|
| 70 | eraASTROM *astrom);
|
|---|
| 71 | void eraAtci13(double rc, double dc,
|
|---|
| 72 | double pr, double pd, double px, double rv,
|
|---|
| 73 | double date1, double date2,
|
|---|
| 74 | double *ri, double *di, double *eo);
|
|---|
| 75 | void eraAtciq(double rc, double dc, double pr, double pd,
|
|---|
| 76 | double px, double rv, eraASTROM *astrom,
|
|---|
| 77 | double *ri, double *di);
|
|---|
| 78 | void eraAtciqn(double rc, double dc, double pr, double pd,
|
|---|
| 79 | double px, double rv, eraASTROM *astrom,
|
|---|
| 80 | int n, eraLDBODY b[], double *ri, double *di);
|
|---|
| 81 | void eraAtciqz(double rc, double dc, eraASTROM *astrom,
|
|---|
| 82 | double *ri, double *di);
|
|---|
| 83 | int eraAtco13(double rc, double dc,
|
|---|
| 84 | double pr, double pd, double px, double rv,
|
|---|
| 85 | double utc1, double utc2, double dut1,
|
|---|
| 86 | double elong, double phi, double hm, double xp, double yp,
|
|---|
| 87 | double phpa, double tc, double rh, double wl,
|
|---|
| 88 | double *aob, double *zob, double *hob,
|
|---|
| 89 | double *dob, double *rob, double *eo);
|
|---|
| 90 | void eraAtic13(double ri, double di,
|
|---|
| 91 | double date1, double date2,
|
|---|
| 92 | double *rc, double *dc, double *eo);
|
|---|
| 93 | void eraAticq(double ri, double di, eraASTROM *astrom,
|
|---|
| 94 | double *rc, double *dc);
|
|---|
| 95 | void eraAticqn(double ri, double di, eraASTROM *astrom,
|
|---|
| 96 | int n, eraLDBODY b[], double *rc, double *dc);
|
|---|
| 97 | int eraAtio13(double ri, double di,
|
|---|
| 98 | double utc1, double utc2, double dut1,
|
|---|
| 99 | double elong, double phi, double hm, double xp, double yp,
|
|---|
| 100 | double phpa, double tc, double rh, double wl,
|
|---|
| 101 | double *aob, double *zob, double *hob,
|
|---|
| 102 | double *dob, double *rob);
|
|---|
| 103 | void eraAtioq(double ri, double di, eraASTROM *astrom,
|
|---|
| 104 | double *aob, double *zob,
|
|---|
| 105 | double *hob, double *dob, double *rob);
|
|---|
| 106 | int eraAtoc13(const char *type, double ob1, double ob2,
|
|---|
| 107 | double utc1, double utc2, double dut1,
|
|---|
| 108 | double elong, double phi, double hm, double xp, double yp,
|
|---|
| 109 | double phpa, double tc, double rh, double wl,
|
|---|
| 110 | double *rc, double *dc);
|
|---|
| 111 | int eraAtoi13(const char *type, double ob1, double ob2,
|
|---|
| 112 | double utc1, double utc2, double dut1,
|
|---|
| 113 | double elong, double phi, double hm, double xp, double yp,
|
|---|
| 114 | double phpa, double tc, double rh, double wl,
|
|---|
| 115 | double *ri, double *di);
|
|---|
| 116 | void eraAtoiq(const char *type,
|
|---|
| 117 | double ob1, double ob2, eraASTROM *astrom,
|
|---|
| 118 | double *ri, double *di);
|
|---|
| 119 | void eraLd(double bm, double p[3], double q[3], double e[3],
|
|---|
| 120 | double em, double dlim, double p1[3]);
|
|---|
| 121 | void eraLdn(int n, eraLDBODY b[], double ob[3], double sc[3],
|
|---|
| 122 | double sn[3]);
|
|---|
| 123 | void eraLdsun(double p[3], double e[3], double em, double p1[3]);
|
|---|
| 124 | void eraPmpx(double rc, double dc, double pr, double pd,
|
|---|
| 125 | double px, double rv, double pmt, double pob[3],
|
|---|
| 126 | double pco[3]);
|
|---|
| 127 | int eraPmsafe(double ra1, double dec1, double pmr1, double pmd1,
|
|---|
| 128 | double px1, double rv1,
|
|---|
| 129 | double ep1a, double ep1b, double ep2a, double ep2b,
|
|---|
| 130 | double *ra2, double *dec2, double *pmr2, double *pmd2,
|
|---|
| 131 | double *px2, double *rv2);
|
|---|
| 132 | void eraPvtob(double elong, double phi, double height, double xp,
|
|---|
| 133 | double yp, double sp, double theta, double pv[2][3]);
|
|---|
| 134 | void eraRefco(double phpa, double tc, double rh, double wl,
|
|---|
| 135 | double *refa, double *refb);
|
|---|
| 136 |
|
|---|
| 137 | /* Astronomy/Ephemerides */
|
|---|
| 138 | int eraEpv00(double date1, double date2,
|
|---|
| 139 | double pvh[2][3], double pvb[2][3]);
|
|---|
| 140 | int eraPlan94(double date1, double date2, int np, double pv[2][3]);
|
|---|
| 141 |
|
|---|
| 142 | /* Astronomy/FundamentalArgs */
|
|---|
| 143 | double eraFad03(double t);
|
|---|
| 144 | double eraFae03(double t);
|
|---|
| 145 | double eraFaf03(double t);
|
|---|
| 146 | double eraFaju03(double t);
|
|---|
| 147 | double eraFal03(double t);
|
|---|
| 148 | double eraFalp03(double t);
|
|---|
| 149 | double eraFama03(double t);
|
|---|
| 150 | double eraFame03(double t);
|
|---|
| 151 | double eraFane03(double t);
|
|---|
| 152 | double eraFaom03(double t);
|
|---|
| 153 | double eraFapa03(double t);
|
|---|
| 154 | double eraFasa03(double t);
|
|---|
| 155 | double eraFaur03(double t);
|
|---|
| 156 | double eraFave03(double t);
|
|---|
| 157 |
|
|---|
| 158 | /* Astronomy/PrecNutPolar */
|
|---|
| 159 | void eraBi00(double *dpsibi, double *depsbi, double *dra);
|
|---|
| 160 | void eraBp00(double date1, double date2,
|
|---|
| 161 | double rb[3][3], double rp[3][3], double rbp[3][3]);
|
|---|
| 162 | void eraBp06(double date1, double date2,
|
|---|
| 163 | double rb[3][3], double rp[3][3], double rbp[3][3]);
|
|---|
| 164 | void eraBpn2xy(double rbpn[3][3], double *x, double *y);
|
|---|
| 165 | void eraC2i00a(double date1, double date2, double rc2i[3][3]);
|
|---|
| 166 | void eraC2i00b(double date1, double date2, double rc2i[3][3]);
|
|---|
| 167 | void eraC2i06a(double date1, double date2, double rc2i[3][3]);
|
|---|
| 168 | void eraC2ibpn(double date1, double date2, double rbpn[3][3],
|
|---|
| 169 | double rc2i[3][3]);
|
|---|
| 170 | void eraC2ixy(double date1, double date2, double x, double y,
|
|---|
| 171 | double rc2i[3][3]);
|
|---|
| 172 | void eraC2ixys(double x, double y, double s, double rc2i[3][3]);
|
|---|
| 173 | void eraC2t00a(double tta, double ttb, double uta, double utb,
|
|---|
| 174 | double xp, double yp, double rc2t[3][3]);
|
|---|
| 175 | void eraC2t00b(double tta, double ttb, double uta, double utb,
|
|---|
| 176 | double xp, double yp, double rc2t[3][3]);
|
|---|
| 177 | void eraC2t06a(double tta, double ttb, double uta, double utb,
|
|---|
| 178 | double xp, double yp, double rc2t[3][3]);
|
|---|
| 179 | void eraC2tcio(double rc2i[3][3], double era, double rpom[3][3],
|
|---|
| 180 | double rc2t[3][3]);
|
|---|
| 181 | void eraC2teqx(double rbpn[3][3], double gst, double rpom[3][3],
|
|---|
| 182 | double rc2t[3][3]);
|
|---|
| 183 | void eraC2tpe(double tta, double ttb, double uta, double utb,
|
|---|
| 184 | double dpsi, double deps, double xp, double yp,
|
|---|
| 185 | double rc2t[3][3]);
|
|---|
| 186 | void eraC2txy(double tta, double ttb, double uta, double utb,
|
|---|
| 187 | double x, double y, double xp, double yp,
|
|---|
| 188 | double rc2t[3][3]);
|
|---|
| 189 | double eraEo06a(double date1, double date2);
|
|---|
| 190 | double eraEors(double rnpb[3][3], double s);
|
|---|
| 191 | void eraFw2m(double gamb, double phib, double psi, double eps,
|
|---|
| 192 | double r[3][3]);
|
|---|
| 193 | void eraFw2xy(double gamb, double phib, double psi, double eps,
|
|---|
| 194 | double *x, double *y);
|
|---|
| 195 | void eraLtp(double epj, double rp[3][3]);
|
|---|
| 196 | void eraLtpb(double epj, double rpb[3][3]);
|
|---|
| 197 | void eraLtpecl(double epj, double vec[3]);
|
|---|
| 198 | void eraLtpequ(double epj, double veq[3]);
|
|---|
| 199 | void eraNum00a(double date1, double date2, double rmatn[3][3]);
|
|---|
| 200 | void eraNum00b(double date1, double date2, double rmatn[3][3]);
|
|---|
| 201 | void eraNum06a(double date1, double date2, double rmatn[3][3]);
|
|---|
| 202 | void eraNumat(double epsa, double dpsi, double deps, double rmatn[3][3]);
|
|---|
| 203 | void eraNut00a(double date1, double date2, double *dpsi, double *deps);
|
|---|
| 204 | void eraNut00b(double date1, double date2, double *dpsi, double *deps);
|
|---|
| 205 | void eraNut06a(double date1, double date2, double *dpsi, double *deps);
|
|---|
| 206 | void eraNut80(double date1, double date2, double *dpsi, double *deps);
|
|---|
| 207 | void eraNutm80(double date1, double date2, double rmatn[3][3]);
|
|---|
| 208 | double eraObl06(double date1, double date2);
|
|---|
| 209 | double eraObl80(double date1, double date2);
|
|---|
| 210 | void eraP06e(double date1, double date2,
|
|---|
| 211 | double *eps0, double *psia, double *oma, double *bpa,
|
|---|
| 212 | double *bqa, double *pia, double *bpia,
|
|---|
| 213 | double *epsa, double *chia, double *za, double *zetaa,
|
|---|
| 214 | double *thetaa, double *pa,
|
|---|
| 215 | double *gam, double *phi, double *psi);
|
|---|
| 216 | void eraPb06(double date1, double date2,
|
|---|
| 217 | double *bzeta, double *bz, double *btheta);
|
|---|
| 218 | void eraPfw06(double date1, double date2,
|
|---|
| 219 | double *gamb, double *phib, double *psib, double *epsa);
|
|---|
| 220 | void eraPmat00(double date1, double date2, double rbp[3][3]);
|
|---|
| 221 | void eraPmat06(double date1, double date2, double rbp[3][3]);
|
|---|
| 222 | void eraPmat76(double date1, double date2, double rmatp[3][3]);
|
|---|
| 223 | void eraPn00(double date1, double date2, double dpsi, double deps,
|
|---|
| 224 | double *epsa,
|
|---|
| 225 | double rb[3][3], double rp[3][3], double rbp[3][3],
|
|---|
| 226 | double rn[3][3], double rbpn[3][3]);
|
|---|
| 227 | void eraPn00a(double date1, double date2,
|
|---|
| 228 | double *dpsi, double *deps, double *epsa,
|
|---|
| 229 | double rb[3][3], double rp[3][3], double rbp[3][3],
|
|---|
| 230 | double rn[3][3], double rbpn[3][3]);
|
|---|
| 231 | void eraPn00b(double date1, double date2,
|
|---|
| 232 | double *dpsi, double *deps, double *epsa,
|
|---|
| 233 | double rb[3][3], double rp[3][3], double rbp[3][3],
|
|---|
| 234 | double rn[3][3], double rbpn[3][3]);
|
|---|
| 235 | void eraPn06(double date1, double date2, double dpsi, double deps,
|
|---|
| 236 | double *epsa,
|
|---|
| 237 | double rb[3][3], double rp[3][3], double rbp[3][3],
|
|---|
| 238 | double rn[3][3], double rbpn[3][3]);
|
|---|
| 239 | void eraPn06a(double date1, double date2,
|
|---|
| 240 | double *dpsi, double *deps, double *epsa,
|
|---|
| 241 | double rb[3][3], double rp[3][3], double rbp[3][3],
|
|---|
| 242 | double rn[3][3], double rbpn[3][3]);
|
|---|
| 243 | void eraPnm00a(double date1, double date2, double rbpn[3][3]);
|
|---|
| 244 | void eraPnm00b(double date1, double date2, double rbpn[3][3]);
|
|---|
| 245 | void eraPnm06a(double date1, double date2, double rnpb[3][3]);
|
|---|
| 246 | void eraPnm80(double date1, double date2, double rmatpn[3][3]);
|
|---|
| 247 | void eraPom00(double xp, double yp, double sp, double rpom[3][3]);
|
|---|
| 248 | void eraPr00(double date1, double date2,
|
|---|
| 249 | double *dpsipr, double *depspr);
|
|---|
| 250 | void eraPrec76(double date01, double date02,
|
|---|
| 251 | double date11, double date12,
|
|---|
| 252 | double *zeta, double *z, double *theta);
|
|---|
| 253 | double eraS00(double date1, double date2, double x, double y);
|
|---|
| 254 | double eraS00a(double date1, double date2);
|
|---|
| 255 | double eraS00b(double date1, double date2);
|
|---|
| 256 | double eraS06(double date1, double date2, double x, double y);
|
|---|
| 257 | double eraS06a(double date1, double date2);
|
|---|
| 258 | double eraSp00(double date1, double date2);
|
|---|
| 259 | void eraXy06(double date1, double date2, double *x, double *y);
|
|---|
| 260 | void eraXys00a(double date1, double date2,
|
|---|
| 261 | double *x, double *y, double *s);
|
|---|
| 262 | void eraXys00b(double date1, double date2,
|
|---|
| 263 | double *x, double *y, double *s);
|
|---|
| 264 | void eraXys06a(double date1, double date2,
|
|---|
| 265 | double *x, double *y, double *s);
|
|---|
| 266 |
|
|---|
| 267 | /* Astronomy/RotationAndTime */
|
|---|
| 268 | double eraEe00(double date1, double date2, double epsa, double dpsi);
|
|---|
| 269 | double eraEe00a(double date1, double date2);
|
|---|
| 270 | double eraEe00b(double date1, double date2);
|
|---|
| 271 | double eraEe06a(double date1, double date2);
|
|---|
| 272 | double eraEect00(double date1, double date2);
|
|---|
| 273 | double eraEqeq94(double date1, double date2);
|
|---|
| 274 | double eraEra00(double dj1, double dj2);
|
|---|
| 275 | double eraGmst00(double uta, double utb, double tta, double ttb);
|
|---|
| 276 | double eraGmst06(double uta, double utb, double tta, double ttb);
|
|---|
| 277 | double eraGmst82(double dj1, double dj2);
|
|---|
| 278 | double eraGst00a(double uta, double utb, double tta, double ttb);
|
|---|
| 279 | double eraGst00b(double uta, double utb);
|
|---|
| 280 | double eraGst06(double uta, double utb, double tta, double ttb,
|
|---|
| 281 | double rnpb[3][3]);
|
|---|
| 282 | double eraGst06a(double uta, double utb, double tta, double ttb);
|
|---|
| 283 | double eraGst94(double uta, double utb);
|
|---|
| 284 |
|
|---|
| 285 | /* Astronomy/SpaceMotion */
|
|---|
| 286 | int eraPvstar(double pv[2][3], double *ra, double *dec,
|
|---|
| 287 | double *pmr, double *pmd, double *px, double *rv);
|
|---|
| 288 | int eraStarpv(double ra, double dec,
|
|---|
| 289 | double pmr, double pmd, double px, double rv,
|
|---|
| 290 | double pv[2][3]);
|
|---|
| 291 |
|
|---|
| 292 | /* Astronomy/StarCatalogs */
|
|---|
| 293 | void eraFk52h(double r5, double d5,
|
|---|
| 294 | double dr5, double dd5, double px5, double rv5,
|
|---|
| 295 | double *rh, double *dh,
|
|---|
| 296 | double *drh, double *ddh, double *pxh, double *rvh);
|
|---|
| 297 | void eraFk5hip(double r5h[3][3], double s5h[3]);
|
|---|
| 298 | void eraFk5hz(double r5, double d5, double date1, double date2,
|
|---|
| 299 | double *rh, double *dh);
|
|---|
| 300 | void eraH2fk5(double rh, double dh,
|
|---|
| 301 | double drh, double ddh, double pxh, double rvh,
|
|---|
| 302 | double *r5, double *d5,
|
|---|
| 303 | double *dr5, double *dd5, double *px5, double *rv5);
|
|---|
| 304 | void eraHfk5z(double rh, double dh, double date1, double date2,
|
|---|
| 305 | double *r5, double *d5, double *dr5, double *dd5);
|
|---|
| 306 | int eraStarpm(double ra1, double dec1,
|
|---|
| 307 | double pmr1, double pmd1, double px1, double rv1,
|
|---|
| 308 | double ep1a, double ep1b, double ep2a, double ep2b,
|
|---|
| 309 | double *ra2, double *dec2,
|
|---|
| 310 | double *pmr2, double *pmd2, double *px2, double *rv2);
|
|---|
| 311 |
|
|---|
| 312 | /* Astronomy/EclipticCoordinates */
|
|---|
| 313 | void eraEceq06(double date1, double date2, double dl, double db,
|
|---|
| 314 | double *dr, double *dd);
|
|---|
| 315 | void eraEcm06(double date1, double date2, double rm[3][3]);
|
|---|
| 316 | void eraEqec06(double date1, double date2, double dr, double dd,
|
|---|
| 317 | double *dl, double *db);
|
|---|
| 318 | void eraLteceq(double epj, double dl, double db, double *dr, double *dd);
|
|---|
| 319 | void eraLtecm(double epj, double rm[3][3]);
|
|---|
| 320 | void eraLteqec(double epj, double dr, double dd, double *dl, double *db);
|
|---|
| 321 |
|
|---|
| 322 | /* Astronomy/GalacticCoordinates */
|
|---|
| 323 | void eraG2icrs(double dl, double db, double *dr, double *dd);
|
|---|
| 324 | void eraIcrs2g(double dr, double dd, double *dl, double *db);
|
|---|
| 325 |
|
|---|
| 326 | /* Astronomy/GeodeticGeocentric */
|
|---|
| 327 | int eraEform(int n, double *a, double *f);
|
|---|
| 328 | int eraGc2gd(int n, double xyz[3],
|
|---|
| 329 | double *elong, double *phi, double *height);
|
|---|
| 330 | int eraGc2gde(double a, double f, double xyz[3],
|
|---|
| 331 | double *elong, double *phi, double *height);
|
|---|
| 332 | int eraGd2gc(int n, double elong, double phi, double height,
|
|---|
| 333 | double xyz[3]);
|
|---|
| 334 | int eraGd2gce(double a, double f,
|
|---|
| 335 | double elong, double phi, double height, double xyz[3]);
|
|---|
| 336 |
|
|---|
| 337 | /* Astronomy/Timescales */
|
|---|
| 338 | int eraD2dtf(const char *scale, int ndp, double d1, double d2,
|
|---|
| 339 | int *iy, int *im, int *id, int ihmsf[4]);
|
|---|
| 340 | int eraDat(int iy, int im, int id, double fd, double *deltat);
|
|---|
| 341 | double eraDtdb(double date1, double date2,
|
|---|
| 342 | double ut, double elong, double u, double v);
|
|---|
| 343 | int eraDtf2d(const char *scale, int iy, int im, int id,
|
|---|
| 344 | int ihr, int imn, double sec, double *d1, double *d2);
|
|---|
| 345 | int eraTaitt(double tai1, double tai2, double *tt1, double *tt2);
|
|---|
| 346 | int eraTaiut1(double tai1, double tai2, double dta,
|
|---|
| 347 | double *ut11, double *ut12);
|
|---|
| 348 | int eraTaiutc(double tai1, double tai2, double *utc1, double *utc2);
|
|---|
| 349 | int eraTcbtdb(double tcb1, double tcb2, double *tdb1, double *tdb2);
|
|---|
| 350 | int eraTcgtt(double tcg1, double tcg2, double *tt1, double *tt2);
|
|---|
| 351 | int eraTdbtcb(double tdb1, double tdb2, double *tcb1, double *tcb2);
|
|---|
| 352 | int eraTdbtt(double tdb1, double tdb2, double dtr,
|
|---|
| 353 | double *tt1, double *tt2);
|
|---|
| 354 | int eraTttai(double tt1, double tt2, double *tai1, double *tai2);
|
|---|
| 355 | int eraTttcg(double tt1, double tt2, double *tcg1, double *tcg2);
|
|---|
| 356 | int eraTttdb(double tt1, double tt2, double dtr,
|
|---|
| 357 | double *tdb1, double *tdb2);
|
|---|
| 358 | int eraTtut1(double tt1, double tt2, double dt,
|
|---|
| 359 | double *ut11, double *ut12);
|
|---|
| 360 | int eraUt1tai(double ut11, double ut12, double dta,
|
|---|
| 361 | double *tai1, double *tai2);
|
|---|
| 362 | int eraUt1tt(double ut11, double ut12, double dt,
|
|---|
| 363 | double *tt1, double *tt2);
|
|---|
| 364 | int eraUt1utc(double ut11, double ut12, double dut1,
|
|---|
| 365 | double *utc1, double *utc2);
|
|---|
| 366 | int eraUtctai(double utc1, double utc2, double *tai1, double *tai2);
|
|---|
| 367 | int eraUtcut1(double utc1, double utc2, double dut1,
|
|---|
| 368 | double *ut11, double *ut12);
|
|---|
| 369 |
|
|---|
| 370 | /* VectorMatrix/AngleOps */
|
|---|
| 371 | void eraA2af(int ndp, double angle, char *sign, int idmsf[4]);
|
|---|
| 372 | void eraA2tf(int ndp, double angle, char *sign, int ihmsf[4]);
|
|---|
| 373 | int eraAf2a(char s, int ideg, int iamin, double asec, double *rad);
|
|---|
| 374 | double eraAnp(double a);
|
|---|
| 375 | double eraAnpm(double a);
|
|---|
| 376 | void eraD2tf(int ndp, double days, char *sign, int ihmsf[4]);
|
|---|
| 377 | int eraTf2a(char s, int ihour, int imin, double sec, double *rad);
|
|---|
| 378 | int eraTf2d(char s, int ihour, int imin, double sec, double *days);
|
|---|
| 379 |
|
|---|
| 380 | /* VectorMatrix/BuildRotations */
|
|---|
| 381 | void eraRx(double phi, double r[3][3]);
|
|---|
| 382 | void eraRy(double theta, double r[3][3]);
|
|---|
| 383 | void eraRz(double psi, double r[3][3]);
|
|---|
| 384 |
|
|---|
| 385 | /* VectorMatrix/CopyExtendExtract */
|
|---|
| 386 | void eraCp(double p[3], double c[3]);
|
|---|
| 387 | void eraCpv(double pv[2][3], double c[2][3]);
|
|---|
| 388 | void eraCr(double r[3][3], double c[3][3]);
|
|---|
| 389 | void eraP2pv(double p[3], double pv[2][3]);
|
|---|
| 390 | void eraPv2p(double pv[2][3], double p[3]);
|
|---|
| 391 |
|
|---|
| 392 | /* VectorMatrix/Initialization */
|
|---|
| 393 | void eraIr(double r[3][3]);
|
|---|
| 394 | void eraZp(double p[3]);
|
|---|
| 395 | void eraZpv(double pv[2][3]);
|
|---|
| 396 | void eraZr(double r[3][3]);
|
|---|
| 397 |
|
|---|
| 398 | /* VectorMatrix/MatrixOps */
|
|---|
| 399 | void eraRxr(double a[3][3], double b[3][3], double atb[3][3]);
|
|---|
| 400 | void eraTr(double r[3][3], double rt[3][3]);
|
|---|
| 401 |
|
|---|
| 402 | /* VectorMatrix/MatrixVectorProducts */
|
|---|
| 403 | void eraRxp(double r[3][3], double p[3], double rp[3]);
|
|---|
| 404 | void eraRxpv(double r[3][3], double pv[2][3], double rpv[2][3]);
|
|---|
| 405 | void eraTrxp(double r[3][3], double p[3], double trp[3]);
|
|---|
| 406 | void eraTrxpv(double r[3][3], double pv[2][3], double trpv[2][3]);
|
|---|
| 407 |
|
|---|
| 408 | /* VectorMatrix/RotationVectors */
|
|---|
| 409 | void eraRm2v(double r[3][3], double w[3]);
|
|---|
| 410 | void eraRv2m(double w[3], double r[3][3]);
|
|---|
| 411 |
|
|---|
| 412 | /* VectorMatrix/SeparationAndAngle */
|
|---|
| 413 | double eraPap(double a[3], double b[3]);
|
|---|
| 414 | double eraPas(double al, double ap, double bl, double bp);
|
|---|
| 415 | double eraSepp(double a[3], double b[3]);
|
|---|
| 416 | double eraSeps(double al, double ap, double bl, double bp);
|
|---|
| 417 |
|
|---|
| 418 | /* VectorMatrix/SphericalCartesian */
|
|---|
| 419 | void eraC2s(double p[3], double *theta, double *phi);
|
|---|
| 420 | void eraP2s(double p[3], double *theta, double *phi, double *r);
|
|---|
| 421 | void eraPv2s(double pv[2][3],
|
|---|
| 422 | double *theta, double *phi, double *r,
|
|---|
| 423 | double *td, double *pd, double *rd);
|
|---|
| 424 | void eraS2c(double theta, double phi, double c[3]);
|
|---|
| 425 | void eraS2p(double theta, double phi, double r, double p[3]);
|
|---|
| 426 | void eraS2pv(double theta, double phi, double r,
|
|---|
| 427 | double td, double pd, double rd,
|
|---|
| 428 | double pv[2][3]);
|
|---|
| 429 |
|
|---|
| 430 | /* VectorMatrix/VectorOps */
|
|---|
| 431 | double eraPdp(double a[3], double b[3]);
|
|---|
| 432 | double eraPm(double p[3]);
|
|---|
| 433 | void eraPmp(double a[3], double b[3], double amb[3]);
|
|---|
| 434 | void eraPn(double p[3], double *r, double u[3]);
|
|---|
| 435 | void eraPpp(double a[3], double b[3], double apb[3]);
|
|---|
| 436 | void eraPpsp(double a[3], double s, double b[3], double apsb[3]);
|
|---|
| 437 | void eraPvdpv(double a[2][3], double b[2][3], double adb[2]);
|
|---|
| 438 | void eraPvm(double pv[2][3], double *r, double *s);
|
|---|
| 439 | void eraPvmpv(double a[2][3], double b[2][3], double amb[2][3]);
|
|---|
| 440 | void eraPvppv(double a[2][3], double b[2][3], double apb[2][3]);
|
|---|
| 441 | void eraPvu(double dt, double pv[2][3], double upv[2][3]);
|
|---|
| 442 | void eraPvup(double dt, double pv[2][3], double p[3]);
|
|---|
| 443 | void eraPvxpv(double a[2][3], double b[2][3], double axb[2][3]);
|
|---|
| 444 | void eraPxp(double a[3], double b[3], double axb[3]);
|
|---|
| 445 | void eraS2xpv(double s1, double s2, double pv[2][3], double spv[2][3]);
|
|---|
| 446 | void eraSxp(double s, double p[3], double sp[3]);
|
|---|
| 447 | void eraSxpv(double s, double pv[2][3], double spv[2][3]);
|
|---|
| 448 |
|
|---|
| 449 | #ifdef __cplusplus
|
|---|
| 450 | }
|
|---|
| 451 | #endif
|
|---|
| 452 |
|
|---|
| 453 | #endif
|
|---|
| 454 |
|
|---|
| 455 |
|
|---|
| 456 | /*----------------------------------------------------------------------
|
|---|
| 457 | **
|
|---|
| 458 | **
|
|---|
| 459 | ** Copyright (C) 2013-2016, NumFOCUS Foundation.
|
|---|
| 460 | ** All rights reserved.
|
|---|
| 461 | **
|
|---|
| 462 | ** This library is derived, with permission, from the International
|
|---|
| 463 | ** Astronomical Union's "Standards of Fundamental Astronomy" library,
|
|---|
| 464 | ** available from http://www.iausofa.org.
|
|---|
| 465 | **
|
|---|
| 466 | ** The ERFA version is intended to retain identical functionality to
|
|---|
| 467 | ** the SOFA library, but made distinct through different function and
|
|---|
| 468 | ** file names, as set out in the SOFA license conditions. The SOFA
|
|---|
| 469 | ** original has a role as a reference standard for the IAU and IERS,
|
|---|
| 470 | ** and consequently redistribution is permitted only in its unaltered
|
|---|
| 471 | ** state. The ERFA version is not subject to this restriction and
|
|---|
| 472 | ** therefore can be included in distributions which do not support the
|
|---|
| 473 | ** concept of "read only" software.
|
|---|
| 474 | **
|
|---|
| 475 | ** Although the intent is to replicate the SOFA API (other than
|
|---|
| 476 | ** replacement of prefix names) and results (with the exception of
|
|---|
| 477 | ** bugs; any that are discovered will be fixed), SOFA is not
|
|---|
| 478 | ** responsible for any errors found in this version of the library.
|
|---|
| 479 | **
|
|---|
| 480 | ** If you wish to acknowledge the SOFA heritage, please acknowledge
|
|---|
| 481 | ** that you are using a library derived from SOFA, rather than SOFA
|
|---|
| 482 | ** itself.
|
|---|
| 483 | **
|
|---|
| 484 | **
|
|---|
| 485 | ** TERMS AND CONDITIONS
|
|---|
| 486 | **
|
|---|
| 487 | ** Redistribution and use in source and binary forms, with or without
|
|---|
| 488 | ** modification, are permitted provided that the following conditions
|
|---|
| 489 | ** are met:
|
|---|
| 490 | **
|
|---|
| 491 | ** 1 Redistributions of source code must retain the above copyright
|
|---|
| 492 | ** notice, this list of conditions and the following disclaimer.
|
|---|
| 493 | **
|
|---|
| 494 | ** 2 Redistributions in binary form must reproduce the above copyright
|
|---|
| 495 | ** notice, this list of conditions and the following disclaimer in
|
|---|
| 496 | ** the documentation and/or other materials provided with the
|
|---|
| 497 | ** distribution.
|
|---|
| 498 | **
|
|---|
| 499 | ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
|
|---|
| 500 | ** the International Astronomical Union nor the names of its
|
|---|
| 501 | ** contributors may be used to endorse or promote products derived
|
|---|
| 502 | ** from this software without specific prior written permission.
|
|---|
| 503 | **
|
|---|
| 504 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|---|
| 505 | ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|---|
| 506 | ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|---|
| 507 | ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|---|
| 508 | ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|---|
| 509 | ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|---|
| 510 | ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|---|
| 511 | ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|---|
| 512 | ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|---|
| 513 | ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|---|
| 514 | ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|---|
| 515 | ** POSSIBILITY OF SUCH DAMAGE.
|
|---|
| 516 | **
|
|---|
| 517 | */
|
|---|