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-2015, 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 eraNum00a(double date1, double date2, double rmatn[3][3]);
|
---|
196 | void eraNum00b(double date1, double date2, double rmatn[3][3]);
|
---|
197 | void eraNum06a(double date1, double date2, double rmatn[3][3]);
|
---|
198 | void eraNumat(double epsa, double dpsi, double deps, double rmatn[3][3]);
|
---|
199 | void eraNut00a(double date1, double date2, double *dpsi, double *deps);
|
---|
200 | void eraNut00b(double date1, double date2, double *dpsi, double *deps);
|
---|
201 | void eraNut06a(double date1, double date2, double *dpsi, double *deps);
|
---|
202 | void eraNut80(double date1, double date2, double *dpsi, double *deps);
|
---|
203 | void eraNutm80(double date1, double date2, double rmatn[3][3]);
|
---|
204 | double eraObl06(double date1, double date2);
|
---|
205 | double eraObl80(double date1, double date2);
|
---|
206 | void eraP06e(double date1, double date2,
|
---|
207 | double *eps0, double *psia, double *oma, double *bpa,
|
---|
208 | double *bqa, double *pia, double *bpia,
|
---|
209 | double *epsa, double *chia, double *za, double *zetaa,
|
---|
210 | double *thetaa, double *pa,
|
---|
211 | double *gam, double *phi, double *psi);
|
---|
212 | void eraPb06(double date1, double date2,
|
---|
213 | double *bzeta, double *bz, double *btheta);
|
---|
214 | void eraPfw06(double date1, double date2,
|
---|
215 | double *gamb, double *phib, double *psib, double *epsa);
|
---|
216 | void eraPmat00(double date1, double date2, double rbp[3][3]);
|
---|
217 | void eraPmat06(double date1, double date2, double rbp[3][3]);
|
---|
218 | void eraPmat76(double date1, double date2, double rmatp[3][3]);
|
---|
219 | void eraPn00(double date1, double date2, double dpsi, double deps,
|
---|
220 | double *epsa,
|
---|
221 | double rb[3][3], double rp[3][3], double rbp[3][3],
|
---|
222 | double rn[3][3], double rbpn[3][3]);
|
---|
223 | void eraPn00a(double date1, double date2,
|
---|
224 | double *dpsi, double *deps, 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 eraPn00b(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 eraPn06(double date1, double date2, double dpsi, double deps,
|
---|
232 | 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 eraPn06a(double date1, double date2,
|
---|
236 | double *dpsi, double *deps, 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 eraPnm00a(double date1, double date2, double rbpn[3][3]);
|
---|
240 | void eraPnm00b(double date1, double date2, double rbpn[3][3]);
|
---|
241 | void eraPnm06a(double date1, double date2, double rnpb[3][3]);
|
---|
242 | void eraPnm80(double date1, double date2, double rmatpn[3][3]);
|
---|
243 | void eraPom00(double xp, double yp, double sp, double rpom[3][3]);
|
---|
244 | void eraPr00(double date1, double date2,
|
---|
245 | double *dpsipr, double *depspr);
|
---|
246 | void eraPrec76(double date01, double date02,
|
---|
247 | double date11, double date12,
|
---|
248 | double *zeta, double *z, double *theta);
|
---|
249 | double eraS00(double date1, double date2, double x, double y);
|
---|
250 | double eraS00a(double date1, double date2);
|
---|
251 | double eraS00b(double date1, double date2);
|
---|
252 | double eraS06(double date1, double date2, double x, double y);
|
---|
253 | double eraS06a(double date1, double date2);
|
---|
254 | double eraSp00(double date1, double date2);
|
---|
255 | void eraXy06(double date1, double date2, double *x, double *y);
|
---|
256 | void eraXys00a(double date1, double date2,
|
---|
257 | double *x, double *y, double *s);
|
---|
258 | void eraXys00b(double date1, double date2,
|
---|
259 | double *x, double *y, double *s);
|
---|
260 | void eraXys06a(double date1, double date2,
|
---|
261 | double *x, double *y, double *s);
|
---|
262 |
|
---|
263 | /* Astronomy/RotationAndTime */
|
---|
264 | double eraEe00(double date1, double date2, double epsa, double dpsi);
|
---|
265 | double eraEe00a(double date1, double date2);
|
---|
266 | double eraEe00b(double date1, double date2);
|
---|
267 | double eraEe06a(double date1, double date2);
|
---|
268 | double eraEect00(double date1, double date2);
|
---|
269 | double eraEqeq94(double date1, double date2);
|
---|
270 | double eraEra00(double dj1, double dj2);
|
---|
271 | double eraGmst00(double uta, double utb, double tta, double ttb);
|
---|
272 | double eraGmst06(double uta, double utb, double tta, double ttb);
|
---|
273 | double eraGmst82(double dj1, double dj2);
|
---|
274 | double eraGst00a(double uta, double utb, double tta, double ttb);
|
---|
275 | double eraGst00b(double uta, double utb);
|
---|
276 | double eraGst06(double uta, double utb, double tta, double ttb,
|
---|
277 | double rnpb[3][3]);
|
---|
278 | double eraGst06a(double uta, double utb, double tta, double ttb);
|
---|
279 | double eraGst94(double uta, double utb);
|
---|
280 |
|
---|
281 | /* Astronomy/SpaceMotion */
|
---|
282 | int eraPvstar(double pv[2][3], double *ra, double *dec,
|
---|
283 | double *pmr, double *pmd, double *px, double *rv);
|
---|
284 | int eraStarpv(double ra, double dec,
|
---|
285 | double pmr, double pmd, double px, double rv,
|
---|
286 | double pv[2][3]);
|
---|
287 |
|
---|
288 | /* Astronomy/StarCatalogs */
|
---|
289 | void eraFk52h(double r5, double d5,
|
---|
290 | double dr5, double dd5, double px5, double rv5,
|
---|
291 | double *rh, double *dh,
|
---|
292 | double *drh, double *ddh, double *pxh, double *rvh);
|
---|
293 | void eraFk5hip(double r5h[3][3], double s5h[3]);
|
---|
294 | void eraFk5hz(double r5, double d5, double date1, double date2,
|
---|
295 | double *rh, double *dh);
|
---|
296 | void eraH2fk5(double rh, double dh,
|
---|
297 | double drh, double ddh, double pxh, double rvh,
|
---|
298 | double *r5, double *d5,
|
---|
299 | double *dr5, double *dd5, double *px5, double *rv5);
|
---|
300 | void eraHfk5z(double rh, double dh, double date1, double date2,
|
---|
301 | double *r5, double *d5, double *dr5, double *dd5);
|
---|
302 | int eraStarpm(double ra1, double dec1,
|
---|
303 | double pmr1, double pmd1, double px1, double rv1,
|
---|
304 | double ep1a, double ep1b, double ep2a, double ep2b,
|
---|
305 | double *ra2, double *dec2,
|
---|
306 | double *pmr2, double *pmd2, double *px2, double *rv2);
|
---|
307 |
|
---|
308 | /* Astronomy/GalacticCoordinates */
|
---|
309 | void eraG2icrs ( double dl, double db, double *dr, double *dd );
|
---|
310 | void eraIcrs2g ( double dr, double dd, double *dl, double *db );
|
---|
311 |
|
---|
312 | /* Astronomy/GeodeticGeocentric */
|
---|
313 | int eraEform(int n, double *a, double *f);
|
---|
314 | int eraGc2gd(int n, double xyz[3],
|
---|
315 | double *elong, double *phi, double *height);
|
---|
316 | int eraGc2gde(double a, double f, double xyz[3],
|
---|
317 | double *elong, double *phi, double *height);
|
---|
318 | int eraGd2gc(int n, double elong, double phi, double height,
|
---|
319 | double xyz[3]);
|
---|
320 | int eraGd2gce(double a, double f,
|
---|
321 | double elong, double phi, double height, double xyz[3]);
|
---|
322 |
|
---|
323 | /* Astronomy/Timescales */
|
---|
324 | int eraD2dtf(const char *scale, int ndp, double d1, double d2,
|
---|
325 | int *iy, int *im, int *id, int ihmsf[4]);
|
---|
326 | int eraDat(int iy, int im, int id, double fd, double *deltat);
|
---|
327 | double eraDtdb(double date1, double date2,
|
---|
328 | double ut, double elong, double u, double v);
|
---|
329 | int eraDtf2d(const char *scale, int iy, int im, int id,
|
---|
330 | int ihr, int imn, double sec, double *d1, double *d2);
|
---|
331 | int eraTaitt(double tai1, double tai2, double *tt1, double *tt2);
|
---|
332 | int eraTaiut1(double tai1, double tai2, double dta,
|
---|
333 | double *ut11, double *ut12);
|
---|
334 | int eraTaiutc(double tai1, double tai2, double *utc1, double *utc2);
|
---|
335 | int eraTcbtdb(double tcb1, double tcb2, double *tdb1, double *tdb2);
|
---|
336 | int eraTcgtt(double tcg1, double tcg2, double *tt1, double *tt2);
|
---|
337 | int eraTdbtcb(double tdb1, double tdb2, double *tcb1, double *tcb2);
|
---|
338 | int eraTdbtt(double tdb1, double tdb2, double dtr,
|
---|
339 | double *tt1, double *tt2);
|
---|
340 | int eraTttai(double tt1, double tt2, double *tai1, double *tai2);
|
---|
341 | int eraTttcg(double tt1, double tt2, double *tcg1, double *tcg2);
|
---|
342 | int eraTttdb(double tt1, double tt2, double dtr,
|
---|
343 | double *tdb1, double *tdb2);
|
---|
344 | int eraTtut1(double tt1, double tt2, double dt,
|
---|
345 | double *ut11, double *ut12);
|
---|
346 | int eraUt1tai(double ut11, double ut12, double dta,
|
---|
347 | double *tai1, double *tai2);
|
---|
348 | int eraUt1tt(double ut11, double ut12, double dt,
|
---|
349 | double *tt1, double *tt2);
|
---|
350 | int eraUt1utc(double ut11, double ut12, double dut1,
|
---|
351 | double *utc1, double *utc2);
|
---|
352 | int eraUtctai(double utc1, double utc2, double *tai1, double *tai2);
|
---|
353 | int eraUtcut1(double utc1, double utc2, double dut1,
|
---|
354 | double *ut11, double *ut12);
|
---|
355 |
|
---|
356 | /* VectorMatrix/AngleOps */
|
---|
357 | void eraA2af(int ndp, double angle, char *sign, int idmsf[4]);
|
---|
358 | void eraA2tf(int ndp, double angle, char *sign, int ihmsf[4]);
|
---|
359 | int eraAf2a(char s, int ideg, int iamin, double asec, double *rad);
|
---|
360 | double eraAnp(double a);
|
---|
361 | double eraAnpm(double a);
|
---|
362 | void eraD2tf(int ndp, double days, char *sign, int ihmsf[4]);
|
---|
363 | int eraTf2a(char s, int ihour, int imin, double sec, double *rad);
|
---|
364 | int eraTf2d(char s, int ihour, int imin, double sec, double *days);
|
---|
365 |
|
---|
366 | /* VectorMatrix/BuildRotations */
|
---|
367 | void eraRx(double phi, double r[3][3]);
|
---|
368 | void eraRy(double theta, double r[3][3]);
|
---|
369 | void eraRz(double psi, double r[3][3]);
|
---|
370 |
|
---|
371 | /* VectorMatrix/CopyExtendExtract */
|
---|
372 | void eraCp(double p[3], double c[3]);
|
---|
373 | void eraCpv(double pv[2][3], double c[2][3]);
|
---|
374 | void eraCr(double r[3][3], double c[3][3]);
|
---|
375 | void eraP2pv(double p[3], double pv[2][3]);
|
---|
376 | void eraPv2p(double pv[2][3], double p[3]);
|
---|
377 |
|
---|
378 | /* VectorMatrix/Initialization */
|
---|
379 | void eraIr(double r[3][3]);
|
---|
380 | void eraZp(double p[3]);
|
---|
381 | void eraZpv(double pv[2][3]);
|
---|
382 | void eraZr(double r[3][3]);
|
---|
383 |
|
---|
384 | /* VectorMatrix/MatrixOps */
|
---|
385 | void eraRxr(double a[3][3], double b[3][3], double atb[3][3]);
|
---|
386 | void eraTr(double r[3][3], double rt[3][3]);
|
---|
387 |
|
---|
388 | /* VectorMatrix/MatrixVectorProducts */
|
---|
389 | void eraRxp(double r[3][3], double p[3], double rp[3]);
|
---|
390 | void eraRxpv(double r[3][3], double pv[2][3], double rpv[2][3]);
|
---|
391 | void eraTrxp(double r[3][3], double p[3], double trp[3]);
|
---|
392 | void eraTrxpv(double r[3][3], double pv[2][3], double trpv[2][3]);
|
---|
393 |
|
---|
394 | /* VectorMatrix/RotationVectors */
|
---|
395 | void eraRm2v(double r[3][3], double w[3]);
|
---|
396 | void eraRv2m(double w[3], double r[3][3]);
|
---|
397 |
|
---|
398 | /* VectorMatrix/SeparationAndAngle */
|
---|
399 | double eraPap(double a[3], double b[3]);
|
---|
400 | double eraPas(double al, double ap, double bl, double bp);
|
---|
401 | double eraSepp(double a[3], double b[3]);
|
---|
402 | double eraSeps(double al, double ap, double bl, double bp);
|
---|
403 |
|
---|
404 | /* VectorMatrix/SphericalCartesian */
|
---|
405 | void eraC2s(double p[3], double *theta, double *phi);
|
---|
406 | void eraP2s(double p[3], double *theta, double *phi, double *r);
|
---|
407 | void eraPv2s(double pv[2][3],
|
---|
408 | double *theta, double *phi, double *r,
|
---|
409 | double *td, double *pd, double *rd);
|
---|
410 | void eraS2c(double theta, double phi, double c[3]);
|
---|
411 | void eraS2p(double theta, double phi, double r, double p[3]);
|
---|
412 | void eraS2pv(double theta, double phi, double r,
|
---|
413 | double td, double pd, double rd,
|
---|
414 | double pv[2][3]);
|
---|
415 |
|
---|
416 | /* VectorMatrix/VectorOps */
|
---|
417 | double eraPdp(double a[3], double b[3]);
|
---|
418 | double eraPm(double p[3]);
|
---|
419 | void eraPmp(double a[3], double b[3], double amb[3]);
|
---|
420 | void eraPn(double p[3], double *r, double u[3]);
|
---|
421 | void eraPpp(double a[3], double b[3], double apb[3]);
|
---|
422 | void eraPpsp(double a[3], double s, double b[3], double apsb[3]);
|
---|
423 | void eraPvdpv(double a[2][3], double b[2][3], double adb[2]);
|
---|
424 | void eraPvm(double pv[2][3], double *r, double *s);
|
---|
425 | void eraPvmpv(double a[2][3], double b[2][3], double amb[2][3]);
|
---|
426 | void eraPvppv(double a[2][3], double b[2][3], double apb[2][3]);
|
---|
427 | void eraPvu(double dt, double pv[2][3], double upv[2][3]);
|
---|
428 | void eraPvup(double dt, double pv[2][3], double p[3]);
|
---|
429 | void eraPvxpv(double a[2][3], double b[2][3], double axb[2][3]);
|
---|
430 | void eraPxp(double a[3], double b[3], double axb[3]);
|
---|
431 | void eraS2xpv(double s1, double s2, double pv[2][3], double spv[2][3]);
|
---|
432 | void eraSxp(double s, double p[3], double sp[3]);
|
---|
433 | void eraSxpv(double s, double pv[2][3], double spv[2][3]);
|
---|
434 |
|
---|
435 | #ifdef __cplusplus
|
---|
436 | }
|
---|
437 | #endif
|
---|
438 |
|
---|
439 | #endif
|
---|
440 |
|
---|
441 |
|
---|
442 | /*----------------------------------------------------------------------
|
---|
443 | **
|
---|
444 | **
|
---|
445 | ** Copyright (C) 2013-2015, NumFOCUS Foundation.
|
---|
446 | ** All rights reserved.
|
---|
447 | **
|
---|
448 | ** This library is derived, with permission, from the International
|
---|
449 | ** Astronomical Union's "Standards of Fundamental Astronomy" library,
|
---|
450 | ** available from http://www.iausofa.org.
|
---|
451 | **
|
---|
452 | ** The ERFA version is intended to retain identical functionality to
|
---|
453 | ** the SOFA library, but made distinct through different function and
|
---|
454 | ** file names, as set out in the SOFA license conditions. The SOFA
|
---|
455 | ** original has a role as a reference standard for the IAU and IERS,
|
---|
456 | ** and consequently redistribution is permitted only in its unaltered
|
---|
457 | ** state. The ERFA version is not subject to this restriction and
|
---|
458 | ** therefore can be included in distributions which do not support the
|
---|
459 | ** concept of "read only" software.
|
---|
460 | **
|
---|
461 | ** Although the intent is to replicate the SOFA API (other than
|
---|
462 | ** replacement of prefix names) and results (with the exception of
|
---|
463 | ** bugs; any that are discovered will be fixed), SOFA is not
|
---|
464 | ** responsible for any errors found in this version of the library.
|
---|
465 | **
|
---|
466 | ** If you wish to acknowledge the SOFA heritage, please acknowledge
|
---|
467 | ** that you are using a library derived from SOFA, rather than SOFA
|
---|
468 | ** itself.
|
---|
469 | **
|
---|
470 | **
|
---|
471 | ** TERMS AND CONDITIONS
|
---|
472 | **
|
---|
473 | ** Redistribution and use in source and binary forms, with or without
|
---|
474 | ** modification, are permitted provided that the following conditions
|
---|
475 | ** are met:
|
---|
476 | **
|
---|
477 | ** 1 Redistributions of source code must retain the above copyright
|
---|
478 | ** notice, this list of conditions and the following disclaimer.
|
---|
479 | **
|
---|
480 | ** 2 Redistributions in binary form must reproduce the above copyright
|
---|
481 | ** notice, this list of conditions and the following disclaimer in
|
---|
482 | ** the documentation and/or other materials provided with the
|
---|
483 | ** distribution.
|
---|
484 | **
|
---|
485 | ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
|
---|
486 | ** the International Astronomical Union nor the names of its
|
---|
487 | ** contributors may be used to endorse or promote products derived
|
---|
488 | ** from this software without specific prior written permission.
|
---|
489 | **
|
---|
490 | ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
---|
491 | ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
---|
492 | ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
---|
493 | ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
---|
494 | ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
---|
495 | ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
---|
496 | ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
---|
497 | ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
---|
498 | ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
---|
499 | ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
---|
500 | ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
---|
501 | ** POSSIBILITY OF SUCH DAMAGE.
|
---|
502 | **
|
---|
503 | */
|
---|