celes 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +32 -0
- data/README.md +179 -0
- data/Rakefile +1 -0
- data/celes.gemspec +22 -0
- data/ext/celes/a2af.c +120 -0
- data/ext/celes/a2tf.c +116 -0
- data/ext/celes/af2a.c +107 -0
- data/ext/celes/anp.c +82 -0
- data/ext/celes/anpm.c +82 -0
- data/ext/celes/bi00.c +116 -0
- data/ext/celes/bp00.c +173 -0
- data/ext/celes/bp06.c +136 -0
- data/ext/celes/bpn2xy.c +100 -0
- data/ext/celes/c2i00a.c +139 -0
- data/ext/celes/c2i00b.c +139 -0
- data/ext/celes/c2i06a.c +136 -0
- data/ext/celes/c2ibpn.c +142 -0
- data/ext/celes/c2ixy.c +131 -0
- data/ext/celes/c2ixys.c +123 -0
- data/ext/celes/c2s.c +96 -0
- data/ext/celes/c2t00a.c +154 -0
- data/ext/celes/c2t00b.c +150 -0
- data/ext/celes/c2t06a.c +152 -0
- data/ext/celes/c2tcio.c +122 -0
- data/ext/celes/c2teqx.c +122 -0
- data/ext/celes/c2tpe.c +167 -0
- data/ext/celes/c2txy.c +159 -0
- data/ext/celes/cal2jd.c +139 -0
- data/ext/celes/celes_core.c +2522 -0
- data/ext/celes/cp.c +80 -0
- data/ext/celes/cpv.c +82 -0
- data/ext/celes/cr.c +83 -0
- data/ext/celes/d2dtf.c +206 -0
- data/ext/celes/d2tf.c +160 -0
- data/ext/celes/dat.c +289 -0
- data/ext/celes/depend +25 -0
- data/ext/celes/dtdb.c +1213 -0
- data/ext/celes/dtf2d.c +196 -0
- data/ext/celes/ee00.c +128 -0
- data/ext/celes/ee00a.c +135 -0
- data/ext/celes/ee00b.c +141 -0
- data/ext/celes/ee06a.c +122 -0
- data/ext/celes/eect00.c +282 -0
- data/ext/celes/eform.c +147 -0
- data/ext/celes/eo06a.c +131 -0
- data/ext/celes/eors.c +108 -0
- data/ext/celes/epb.c +96 -0
- data/ext/celes/epb2jd.c +91 -0
- data/ext/celes/epj.c +93 -0
- data/ext/celes/epj2jd.c +91 -0
- data/ext/celes/epv00.c +2589 -0
- data/ext/celes/eqeq94.c +131 -0
- data/ext/celes/era00.c +136 -0
- data/ext/celes/extconf.rb +4 -0
- data/ext/celes/fad03.c +103 -0
- data/ext/celes/fae03.c +102 -0
- data/ext/celes/faf03.c +106 -0
- data/ext/celes/faju03.c +102 -0
- data/ext/celes/fal03.c +103 -0
- data/ext/celes/falp03.c +103 -0
- data/ext/celes/fama03.c +102 -0
- data/ext/celes/fame03.c +102 -0
- data/ext/celes/fane03.c +99 -0
- data/ext/celes/faom03.c +104 -0
- data/ext/celes/fapa03.c +103 -0
- data/ext/celes/fasa03.c +102 -0
- data/ext/celes/faur03.c +99 -0
- data/ext/celes/fave03.c +102 -0
- data/ext/celes/fk52h.c +143 -0
- data/ext/celes/fk5hip.c +126 -0
- data/ext/celes/fk5hz.c +160 -0
- data/ext/celes/fw2m.c +134 -0
- data/ext/celes/fw2xy.c +120 -0
- data/ext/celes/gc2gd.c +134 -0
- data/ext/celes/gc2gde.c +200 -0
- data/ext/celes/gd2gc.c +134 -0
- data/ext/celes/gd2gce.c +138 -0
- data/ext/celes/gmst00.c +145 -0
- data/ext/celes/gmst06.c +136 -0
- data/ext/celes/gmst82.c +151 -0
- data/ext/celes/gst00a.c +138 -0
- data/ext/celes/gst00b.c +146 -0
- data/ext/celes/gst06.c +140 -0
- data/ext/celes/gst06a.c +131 -0
- data/ext/celes/gst94.c +131 -0
- data/ext/celes/h2fk5.c +148 -0
- data/ext/celes/hfk5z.c +175 -0
- data/ext/celes/ir.c +83 -0
- data/ext/celes/jd2cal.c +155 -0
- data/ext/celes/jdcalf.c +161 -0
- data/ext/celes/num00a.c +121 -0
- data/ext/celes/num00b.c +121 -0
- data/ext/celes/num06a.c +125 -0
- data/ext/celes/numat.c +109 -0
- data/ext/celes/nut00a.c +2047 -0
- data/ext/celes/nut00b.c +372 -0
- data/ext/celes/nut06a.c +153 -0
- data/ext/celes/nut80.c +325 -0
- data/ext/celes/nutm80.c +117 -0
- data/ext/celes/obl06.c +118 -0
- data/ext/celes/obl80.c +118 -0
- data/ext/celes/p06e.c +321 -0
- data/ext/celes/p2pv.c +83 -0
- data/ext/celes/p2s.c +91 -0
- data/ext/celes/pap.c +139 -0
- data/ext/celes/pas.c +96 -0
- data/ext/celes/pb06.c +144 -0
- data/ext/celes/pdp.c +84 -0
- data/ext/celes/pfw06.c +165 -0
- data/ext/celes/plan94.c +514 -0
- data/ext/celes/pm.c +83 -0
- data/ext/celes/pmat00.c +118 -0
- data/ext/celes/pmat06.c +122 -0
- data/ext/celes/pmat76.c +141 -0
- data/ext/celes/pmp.c +85 -0
- data/ext/celes/pn.c +109 -0
- data/ext/celes/pn00.c +177 -0
- data/ext/celes/pn00a.c +162 -0
- data/ext/celes/pn00b.c +162 -0
- data/ext/celes/pn06.c +187 -0
- data/ext/celes/pn06a.c +152 -0
- data/ext/celes/pnm00a.c +121 -0
- data/ext/celes/pnm00b.c +121 -0
- data/ext/celes/pnm06a.c +124 -0
- data/ext/celes/pnm80.c +126 -0
- data/ext/celes/pom00.c +115 -0
- data/ext/celes/ppp.c +85 -0
- data/ext/celes/ppsp.c +94 -0
- data/ext/celes/pr00.c +142 -0
- data/ext/celes/prec76.c +148 -0
- data/ext/celes/pv2p.c +81 -0
- data/ext/celes/pv2s.c +144 -0
- data/ext/celes/pvdpv.c +102 -0
- data/ext/celes/pvm.c +86 -0
- data/ext/celes/pvmpv.c +87 -0
- data/ext/celes/pvppv.c +87 -0
- data/ext/celes/pvstar.c +207 -0
- data/ext/celes/pvu.c +93 -0
- data/ext/celes/pvup.c +88 -0
- data/ext/celes/pvxpv.c +107 -0
- data/ext/celes/pxp.c +94 -0
- data/ext/celes/rm2v.c +111 -0
- data/ext/celes/rv2m.c +118 -0
- data/ext/celes/rx.c +110 -0
- data/ext/celes/rxp.c +99 -0
- data/ext/celes/rxpv.c +86 -0
- data/ext/celes/rxr.c +99 -0
- data/ext/celes/ry.c +110 -0
- data/ext/celes/rz.c +110 -0
- data/ext/celes/s00.c +371 -0
- data/ext/celes/s00a.c +143 -0
- data/ext/celes/s00b.c +143 -0
- data/ext/celes/s06.c +368 -0
- data/ext/celes/s06a.c +145 -0
- data/ext/celes/s2c.c +85 -0
- data/ext/celes/s2p.c +88 -0
- data/ext/celes/s2pv.c +103 -0
- data/ext/celes/s2xpv.c +87 -0
- data/ext/celes/sepp.c +105 -0
- data/ext/celes/seps.c +93 -0
- data/ext/celes/sofa.h +379 -0
- data/ext/celes/sofam.h +155 -0
- data/ext/celes/sp00.c +118 -0
- data/ext/celes/starpm.c +205 -0
- data/ext/celes/starpv.c +264 -0
- data/ext/celes/sxp.c +84 -0
- data/ext/celes/sxpv.c +85 -0
- data/ext/celes/taitt.c +110 -0
- data/ext/celes/taiut1.c +112 -0
- data/ext/celes/taiutc.c +182 -0
- data/ext/celes/tcbtdb.c +132 -0
- data/ext/celes/tcgtt.c +109 -0
- data/ext/celes/tdbtcb.c +137 -0
- data/ext/celes/tdbtt.c +122 -0
- data/ext/celes/tf2a.c +107 -0
- data/ext/celes/tf2d.c +107 -0
- data/ext/celes/tr.c +93 -0
- data/ext/celes/trxp.c +93 -0
- data/ext/celes/trxpv.c +93 -0
- data/ext/celes/tttai.c +110 -0
- data/ext/celes/tttcg.c +112 -0
- data/ext/celes/tttdb.c +121 -0
- data/ext/celes/ttut1.c +110 -0
- data/ext/celes/ut1tai.c +111 -0
- data/ext/celes/ut1tt.c +110 -0
- data/ext/celes/ut1utc.c +193 -0
- data/ext/celes/utctai.c +163 -0
- data/ext/celes/utcut1.c +151 -0
- data/ext/celes/xy06.c +2758 -0
- data/ext/celes/xys00a.c +133 -0
- data/ext/celes/xys00b.c +133 -0
- data/ext/celes/xys06a.c +133 -0
- data/ext/celes/zp.c +77 -0
- data/ext/celes/zpv.c +79 -0
- data/ext/celes/zr.c +83 -0
- data/lib/celes.rb +6 -0
- data/lib/celes/version.rb +3 -0
- data/sofa_20120301.diff +31384 -0
- data/test/t_sofa.rb +8228 -0
- metadata +251 -0
data/ext/celes/p2s.c
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
#include "sofam.h"
|
|
2
|
+
|
|
3
|
+
void iauP2s(double p[3], double *theta, double *phi, double *r)
|
|
4
|
+
/*
|
|
5
|
+
** - - - - - - -
|
|
6
|
+
** i a u P 2 s
|
|
7
|
+
** - - - - - - -
|
|
8
|
+
**
|
|
9
|
+
** P-vector to spherical polar coordinates.
|
|
10
|
+
**
|
|
11
|
+
** Status: vector/matrix support function.
|
|
12
|
+
**
|
|
13
|
+
** Given:
|
|
14
|
+
** p double[3] p-vector
|
|
15
|
+
**
|
|
16
|
+
** Returned:
|
|
17
|
+
** theta double longitude angle (radians)
|
|
18
|
+
** phi double latitude angle (radians)
|
|
19
|
+
** r double radial distance
|
|
20
|
+
**
|
|
21
|
+
** Notes:
|
|
22
|
+
**
|
|
23
|
+
** 1) If P is null, zero theta, phi and r are returned.
|
|
24
|
+
**
|
|
25
|
+
** 2) At either pole, zero theta is returned.
|
|
26
|
+
**
|
|
27
|
+
** Called:
|
|
28
|
+
** iauC2s p-vector to spherical
|
|
29
|
+
** iauPm modulus of p-vector
|
|
30
|
+
**
|
|
31
|
+
** This revision: 2008 May 22
|
|
32
|
+
**
|
|
33
|
+
** Original version 2012-03-01
|
|
34
|
+
**
|
|
35
|
+
** Copyright (C) 2013 Naoki Arita. See notes at end.
|
|
36
|
+
*/
|
|
37
|
+
{
|
|
38
|
+
iauC2s(p, theta, phi);
|
|
39
|
+
*r = iauPm(p);
|
|
40
|
+
|
|
41
|
+
return;
|
|
42
|
+
|
|
43
|
+
/*----------------------------------------------------------------------
|
|
44
|
+
**
|
|
45
|
+
** Celes is a wrapper of the SOFA Library for Ruby.
|
|
46
|
+
**
|
|
47
|
+
** This file is redistributed and relicensed in accordance with
|
|
48
|
+
** the SOFA Software License (http://www.iausofa.org/tandc.html).
|
|
49
|
+
**
|
|
50
|
+
** The original library is available from IAU Standards of
|
|
51
|
+
** Fundamental Astronomy (http://www.iausofa.org/).
|
|
52
|
+
**
|
|
53
|
+
**
|
|
54
|
+
**
|
|
55
|
+
**
|
|
56
|
+
**
|
|
57
|
+
** Copyright (C) 2013, Naoki Arita
|
|
58
|
+
** All rights reserved.
|
|
59
|
+
**
|
|
60
|
+
** Redistribution and use in source and binary forms, with or without
|
|
61
|
+
** modification, are permitted provided that the following conditions
|
|
62
|
+
** are met:
|
|
63
|
+
**
|
|
64
|
+
** 1 Redistributions of source code must retain the above copyright
|
|
65
|
+
** notice, this list of conditions and the following disclaimer.
|
|
66
|
+
**
|
|
67
|
+
** 2 Redistributions in binary form must reproduce the above copyright
|
|
68
|
+
** notice, this list of conditions and the following disclaimer in
|
|
69
|
+
** the documentation and/or other materials provided with the
|
|
70
|
+
** distribution.
|
|
71
|
+
**
|
|
72
|
+
** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
|
|
73
|
+
** the International Astronomical Union nor the names of its
|
|
74
|
+
** contributors may be used to endorse or promote products derived
|
|
75
|
+
** from this software without specific prior written permission.
|
|
76
|
+
**
|
|
77
|
+
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
78
|
+
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
79
|
+
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
80
|
+
** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
81
|
+
** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
82
|
+
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
83
|
+
** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
84
|
+
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
85
|
+
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
86
|
+
** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
87
|
+
** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
88
|
+
** POSSIBILITY OF SUCH DAMAGE.
|
|
89
|
+
**
|
|
90
|
+
**--------------------------------------------------------------------*/
|
|
91
|
+
}
|
data/ext/celes/pap.c
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
#include "sofam.h"
|
|
2
|
+
|
|
3
|
+
double iauPap(double a[3], double b[3])
|
|
4
|
+
/*
|
|
5
|
+
** - - - - - - -
|
|
6
|
+
** i a u P a p
|
|
7
|
+
** - - - - - - -
|
|
8
|
+
**
|
|
9
|
+
** Position-angle from two p-vectors.
|
|
10
|
+
**
|
|
11
|
+
** Status: vector/matrix support function.
|
|
12
|
+
**
|
|
13
|
+
** Given:
|
|
14
|
+
** a double[3] direction of reference point
|
|
15
|
+
** b double[3] direction of point whose PA is required
|
|
16
|
+
**
|
|
17
|
+
** Returned (function value):
|
|
18
|
+
** double position angle of b with respect to a (radians)
|
|
19
|
+
**
|
|
20
|
+
** Notes:
|
|
21
|
+
**
|
|
22
|
+
** 1) The result is the position angle, in radians, of direction b with
|
|
23
|
+
** respect to direction a. It is in the range -pi to +pi. The
|
|
24
|
+
** sense is such that if b is a small distance "north" of a the
|
|
25
|
+
** position angle is approximately zero, and if b is a small
|
|
26
|
+
** distance "east" of a the position angle is approximately +pi/2.
|
|
27
|
+
**
|
|
28
|
+
** 2) The vectors a and b need not be of unit length.
|
|
29
|
+
**
|
|
30
|
+
** 3) Zero is returned if the two directions are the same or if either
|
|
31
|
+
** vector is null.
|
|
32
|
+
**
|
|
33
|
+
** 4) If vector a is at a pole, the result is ill-defined.
|
|
34
|
+
**
|
|
35
|
+
** Called:
|
|
36
|
+
** iauPn decompose p-vector into modulus and direction
|
|
37
|
+
** iauPm modulus of p-vector
|
|
38
|
+
** iauPxp vector product of two p-vectors
|
|
39
|
+
** iauPmp p-vector minus p-vector
|
|
40
|
+
** iauPdp scalar product of two p-vectors
|
|
41
|
+
**
|
|
42
|
+
** This revision: 2008 May 25
|
|
43
|
+
**
|
|
44
|
+
** Original version 2012-03-01
|
|
45
|
+
**
|
|
46
|
+
** Copyright (C) 2013 Naoki Arita. See notes at end.
|
|
47
|
+
*/
|
|
48
|
+
{
|
|
49
|
+
double am, au[3], bm, st, ct, xa, ya, za, eta[3], xi[3], a2b[3], pa;
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
/* Modulus and direction of the a vector. */
|
|
53
|
+
iauPn(a, &am, au);
|
|
54
|
+
|
|
55
|
+
/* Modulus of the b vector. */
|
|
56
|
+
bm = iauPm(b);
|
|
57
|
+
|
|
58
|
+
/* Deal with the case of a null vector. */
|
|
59
|
+
if ((am == 0.0) || (bm == 0.0)) {
|
|
60
|
+
st = 0.0;
|
|
61
|
+
ct = 1.0;
|
|
62
|
+
} else {
|
|
63
|
+
|
|
64
|
+
/* The "north" axis tangential from a (arbitrary length). */
|
|
65
|
+
xa = a[0];
|
|
66
|
+
ya = a[1];
|
|
67
|
+
za = a[2];
|
|
68
|
+
eta[0] = -xa * za;
|
|
69
|
+
eta[1] = -ya * za;
|
|
70
|
+
eta[2] = xa*xa + ya*ya;
|
|
71
|
+
|
|
72
|
+
/* The "east" axis tangential from a (same length). */
|
|
73
|
+
iauPxp(eta, au, xi);
|
|
74
|
+
|
|
75
|
+
/* The vector from a to b. */
|
|
76
|
+
iauPmp(b, a, a2b);
|
|
77
|
+
|
|
78
|
+
/* Resolve into components along the north and east axes. */
|
|
79
|
+
st = iauPdp(a2b, xi);
|
|
80
|
+
ct = iauPdp(a2b, eta);
|
|
81
|
+
|
|
82
|
+
/* Deal with degenerate cases. */
|
|
83
|
+
if ((st == 0.0) && (ct == 0.0)) ct = 1.0;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* Position angle. */
|
|
87
|
+
pa = atan2(st, ct);
|
|
88
|
+
|
|
89
|
+
return pa;
|
|
90
|
+
|
|
91
|
+
/*----------------------------------------------------------------------
|
|
92
|
+
**
|
|
93
|
+
** Celes is a wrapper of the SOFA Library for Ruby.
|
|
94
|
+
**
|
|
95
|
+
** This file is redistributed and relicensed in accordance with
|
|
96
|
+
** the SOFA Software License (http://www.iausofa.org/tandc.html).
|
|
97
|
+
**
|
|
98
|
+
** The original library is available from IAU Standards of
|
|
99
|
+
** Fundamental Astronomy (http://www.iausofa.org/).
|
|
100
|
+
**
|
|
101
|
+
**
|
|
102
|
+
**
|
|
103
|
+
**
|
|
104
|
+
**
|
|
105
|
+
** Copyright (C) 2013, Naoki Arita
|
|
106
|
+
** All rights reserved.
|
|
107
|
+
**
|
|
108
|
+
** Redistribution and use in source and binary forms, with or without
|
|
109
|
+
** modification, are permitted provided that the following conditions
|
|
110
|
+
** are met:
|
|
111
|
+
**
|
|
112
|
+
** 1 Redistributions of source code must retain the above copyright
|
|
113
|
+
** notice, this list of conditions and the following disclaimer.
|
|
114
|
+
**
|
|
115
|
+
** 2 Redistributions in binary form must reproduce the above copyright
|
|
116
|
+
** notice, this list of conditions and the following disclaimer in
|
|
117
|
+
** the documentation and/or other materials provided with the
|
|
118
|
+
** distribution.
|
|
119
|
+
**
|
|
120
|
+
** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
|
|
121
|
+
** the International Astronomical Union nor the names of its
|
|
122
|
+
** contributors may be used to endorse or promote products derived
|
|
123
|
+
** from this software without specific prior written permission.
|
|
124
|
+
**
|
|
125
|
+
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
126
|
+
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
127
|
+
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
128
|
+
** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
129
|
+
** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
130
|
+
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
131
|
+
** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
132
|
+
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
133
|
+
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
134
|
+
** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
135
|
+
** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
136
|
+
** POSSIBILITY OF SUCH DAMAGE.
|
|
137
|
+
**
|
|
138
|
+
**--------------------------------------------------------------------*/
|
|
139
|
+
}
|
data/ext/celes/pas.c
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
#include "sofam.h"
|
|
2
|
+
|
|
3
|
+
double iauPas(double al, double ap, double bl, double bp)
|
|
4
|
+
/*
|
|
5
|
+
** - - - - - - -
|
|
6
|
+
** i a u P a s
|
|
7
|
+
** - - - - - - -
|
|
8
|
+
**
|
|
9
|
+
** Position-angle from spherical coordinates.
|
|
10
|
+
**
|
|
11
|
+
** Status: vector/matrix support function.
|
|
12
|
+
**
|
|
13
|
+
** Given:
|
|
14
|
+
** al double longitude of point A (e.g. RA) in radians
|
|
15
|
+
** ap double latitude of point A (e.g. Dec) in radians
|
|
16
|
+
** bl double longitude of point B
|
|
17
|
+
** bp double latitude of point B
|
|
18
|
+
**
|
|
19
|
+
** Returned (function value):
|
|
20
|
+
** double position angle of B with respect to A
|
|
21
|
+
**
|
|
22
|
+
** Notes:
|
|
23
|
+
**
|
|
24
|
+
** 1) The result is the bearing (position angle), in radians, of point
|
|
25
|
+
** B with respect to point A. It is in the range -pi to +pi. The
|
|
26
|
+
** sense is such that if B is a small distance "east" of point A,
|
|
27
|
+
** the bearing is approximately +pi/2.
|
|
28
|
+
**
|
|
29
|
+
** 2) Zero is returned if the two points are coincident.
|
|
30
|
+
**
|
|
31
|
+
** This revision: 2008 May 22
|
|
32
|
+
**
|
|
33
|
+
** Original version 2012-03-01
|
|
34
|
+
**
|
|
35
|
+
** Copyright (C) 2013 Naoki Arita. See notes at end.
|
|
36
|
+
*/
|
|
37
|
+
{
|
|
38
|
+
double dl, x, y, pa;
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
dl = bl - al;
|
|
42
|
+
y = sin(dl) * cos(bp);
|
|
43
|
+
x = sin(bp) * cos(ap) - cos(bp) * sin(ap) * cos(dl);
|
|
44
|
+
pa = ((x != 0.0) || (y != 0.0)) ? atan2(y, x) : 0.0;
|
|
45
|
+
|
|
46
|
+
return pa;
|
|
47
|
+
|
|
48
|
+
/*----------------------------------------------------------------------
|
|
49
|
+
**
|
|
50
|
+
** Celes is a wrapper of the SOFA Library for Ruby.
|
|
51
|
+
**
|
|
52
|
+
** This file is redistributed and relicensed in accordance with
|
|
53
|
+
** the SOFA Software License (http://www.iausofa.org/tandc.html).
|
|
54
|
+
**
|
|
55
|
+
** The original library is available from IAU Standards of
|
|
56
|
+
** Fundamental Astronomy (http://www.iausofa.org/).
|
|
57
|
+
**
|
|
58
|
+
**
|
|
59
|
+
**
|
|
60
|
+
**
|
|
61
|
+
**
|
|
62
|
+
** Copyright (C) 2013, Naoki Arita
|
|
63
|
+
** All rights reserved.
|
|
64
|
+
**
|
|
65
|
+
** Redistribution and use in source and binary forms, with or without
|
|
66
|
+
** modification, are permitted provided that the following conditions
|
|
67
|
+
** are met:
|
|
68
|
+
**
|
|
69
|
+
** 1 Redistributions of source code must retain the above copyright
|
|
70
|
+
** notice, this list of conditions and the following disclaimer.
|
|
71
|
+
**
|
|
72
|
+
** 2 Redistributions in binary form must reproduce the above copyright
|
|
73
|
+
** notice, this list of conditions and the following disclaimer in
|
|
74
|
+
** the documentation and/or other materials provided with the
|
|
75
|
+
** distribution.
|
|
76
|
+
**
|
|
77
|
+
** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
|
|
78
|
+
** the International Astronomical Union nor the names of its
|
|
79
|
+
** contributors may be used to endorse or promote products derived
|
|
80
|
+
** from this software without specific prior written permission.
|
|
81
|
+
**
|
|
82
|
+
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
83
|
+
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
84
|
+
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
85
|
+
** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
86
|
+
** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
87
|
+
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
88
|
+
** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
89
|
+
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
90
|
+
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
91
|
+
** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
92
|
+
** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
93
|
+
** POSSIBILITY OF SUCH DAMAGE.
|
|
94
|
+
**
|
|
95
|
+
**--------------------------------------------------------------------*/
|
|
96
|
+
}
|
data/ext/celes/pb06.c
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#include "sofam.h"
|
|
2
|
+
|
|
3
|
+
void iauPb06(double date1, double date2,
|
|
4
|
+
double *bzeta, double *bz, double *btheta)
|
|
5
|
+
/*
|
|
6
|
+
** - - - - - - - -
|
|
7
|
+
** i a u P b 0 6
|
|
8
|
+
** - - - - - - - -
|
|
9
|
+
**
|
|
10
|
+
** This function forms three Euler angles which implement general
|
|
11
|
+
** precession from epoch J2000.0, using the IAU 2006 model. Frame
|
|
12
|
+
** bias (the offset between ICRS and mean J2000.0) is included.
|
|
13
|
+
**
|
|
14
|
+
** Status: support function.
|
|
15
|
+
**
|
|
16
|
+
** Given:
|
|
17
|
+
** date1,date2 double TT as a 2-part Julian Date (Note 1)
|
|
18
|
+
**
|
|
19
|
+
** Returned:
|
|
20
|
+
** bzeta double 1st rotation: radians cw around z
|
|
21
|
+
** bz double 3rd rotation: radians cw around z
|
|
22
|
+
** btheta double 2nd rotation: radians ccw around y
|
|
23
|
+
**
|
|
24
|
+
** Notes:
|
|
25
|
+
**
|
|
26
|
+
** 1) The TT date date1+date2 is a Julian Date, apportioned in any
|
|
27
|
+
** convenient way between the two arguments. For example,
|
|
28
|
+
** JD(TT)=2450123.7 could be expressed in any of these ways,
|
|
29
|
+
** among others:
|
|
30
|
+
**
|
|
31
|
+
** date1 date2
|
|
32
|
+
**
|
|
33
|
+
** 2450123.7 0.0 (JD method)
|
|
34
|
+
** 2451545.0 -1421.3 (J2000 method)
|
|
35
|
+
** 2400000.5 50123.2 (MJD method)
|
|
36
|
+
** 2450123.5 0.2 (date & time method)
|
|
37
|
+
**
|
|
38
|
+
** The JD method is the most natural and convenient to use in
|
|
39
|
+
** cases where the loss of several decimal digits of resolution
|
|
40
|
+
** is acceptable. The J2000 method is best matched to the way
|
|
41
|
+
** the argument is handled internally and will deliver the
|
|
42
|
+
** optimum resolution. The MJD method and the date & time methods
|
|
43
|
+
** are both good compromises between resolution and convenience.
|
|
44
|
+
**
|
|
45
|
+
** 2) The traditional accumulated precession angles zeta_A, z_A,
|
|
46
|
+
** theta_A cannot be obtained in the usual way, namely through
|
|
47
|
+
** polynomial expressions, because of the frame bias. The latter
|
|
48
|
+
** means that two of the angles undergo rapid changes near this
|
|
49
|
+
** date. They are instead the results of decomposing the
|
|
50
|
+
** precession-bias matrix obtained by using the Fukushima-Williams
|
|
51
|
+
** method, which does not suffer from the problem. The
|
|
52
|
+
** decomposition returns values which can be used in the
|
|
53
|
+
** conventional formulation and which include frame bias.
|
|
54
|
+
**
|
|
55
|
+
** 3) The three angles are returned in the conventional order, which
|
|
56
|
+
** is not the same as the order of the corresponding Euler
|
|
57
|
+
** rotations. The precession-bias matrix is
|
|
58
|
+
** R_3(-z) x R_2(+theta) x R_3(-zeta).
|
|
59
|
+
**
|
|
60
|
+
** 4) Should zeta_A, z_A, theta_A angles be required that do not
|
|
61
|
+
** contain frame bias, they are available by calling the SOFA
|
|
62
|
+
** function iauP06e.
|
|
63
|
+
**
|
|
64
|
+
** Called:
|
|
65
|
+
** iauPmat06 PB matrix, IAU 2006
|
|
66
|
+
** iauRz rotate around Z-axis
|
|
67
|
+
**
|
|
68
|
+
** This revision: 2008 May 26
|
|
69
|
+
**
|
|
70
|
+
** Original version 2012-03-01
|
|
71
|
+
**
|
|
72
|
+
** Copyright (C) 2013 Naoki Arita. See notes at end.
|
|
73
|
+
*/
|
|
74
|
+
{
|
|
75
|
+
double r[3][3], r31, r32;
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
/* Precession matrix via Fukushima-Williams angles. */
|
|
79
|
+
iauPmat06(date1, date2, r);
|
|
80
|
+
|
|
81
|
+
/* Solve for z. */
|
|
82
|
+
*bz = atan2(r[1][2], r[0][2]);
|
|
83
|
+
|
|
84
|
+
/* Remove it from the matrix. */
|
|
85
|
+
iauRz(*bz, r);
|
|
86
|
+
|
|
87
|
+
/* Solve for the remaining two angles. */
|
|
88
|
+
*bzeta = atan2 (r[1][0], r[1][1]);
|
|
89
|
+
r31 = r[2][0];
|
|
90
|
+
r32 = r[2][1];
|
|
91
|
+
*btheta = atan2(-dsign(sqrt(r31 * r31 + r32 * r32), r[0][2]),
|
|
92
|
+
r[2][2]);
|
|
93
|
+
|
|
94
|
+
return;
|
|
95
|
+
|
|
96
|
+
/*----------------------------------------------------------------------
|
|
97
|
+
**
|
|
98
|
+
** Celes is a wrapper of the SOFA Library for Ruby.
|
|
99
|
+
**
|
|
100
|
+
** This file is redistributed and relicensed in accordance with
|
|
101
|
+
** the SOFA Software License (http://www.iausofa.org/tandc.html).
|
|
102
|
+
**
|
|
103
|
+
** The original library is available from IAU Standards of
|
|
104
|
+
** Fundamental Astronomy (http://www.iausofa.org/).
|
|
105
|
+
**
|
|
106
|
+
**
|
|
107
|
+
**
|
|
108
|
+
**
|
|
109
|
+
**
|
|
110
|
+
** Copyright (C) 2013, Naoki Arita
|
|
111
|
+
** All rights reserved.
|
|
112
|
+
**
|
|
113
|
+
** Redistribution and use in source and binary forms, with or without
|
|
114
|
+
** modification, are permitted provided that the following conditions
|
|
115
|
+
** are met:
|
|
116
|
+
**
|
|
117
|
+
** 1 Redistributions of source code must retain the above copyright
|
|
118
|
+
** notice, this list of conditions and the following disclaimer.
|
|
119
|
+
**
|
|
120
|
+
** 2 Redistributions in binary form must reproduce the above copyright
|
|
121
|
+
** notice, this list of conditions and the following disclaimer in
|
|
122
|
+
** the documentation and/or other materials provided with the
|
|
123
|
+
** distribution.
|
|
124
|
+
**
|
|
125
|
+
** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
|
|
126
|
+
** the International Astronomical Union nor the names of its
|
|
127
|
+
** contributors may be used to endorse or promote products derived
|
|
128
|
+
** from this software without specific prior written permission.
|
|
129
|
+
**
|
|
130
|
+
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
131
|
+
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
132
|
+
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
133
|
+
** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
134
|
+
** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
135
|
+
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
136
|
+
** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
137
|
+
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
138
|
+
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
139
|
+
** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
140
|
+
** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
141
|
+
** POSSIBILITY OF SUCH DAMAGE.
|
|
142
|
+
**
|
|
143
|
+
**--------------------------------------------------------------------*/
|
|
144
|
+
}
|