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/pvxpv.c
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
#include "sofam.h"
|
|
2
|
+
|
|
3
|
+
void iauPvxpv(double a[2][3], double b[2][3], double axb[2][3])
|
|
4
|
+
/*
|
|
5
|
+
** - - - - - - - - -
|
|
6
|
+
** i a u P v x p v
|
|
7
|
+
** - - - - - - - - -
|
|
8
|
+
**
|
|
9
|
+
** Outer (=vector=cross) product of two pv-vectors.
|
|
10
|
+
**
|
|
11
|
+
** Status: vector/matrix support function.
|
|
12
|
+
**
|
|
13
|
+
** Given:
|
|
14
|
+
** a double[2][3] first pv-vector
|
|
15
|
+
** b double[2][3] second pv-vector
|
|
16
|
+
**
|
|
17
|
+
** Returned:
|
|
18
|
+
** axb double[2][3] a x b
|
|
19
|
+
**
|
|
20
|
+
** Notes:
|
|
21
|
+
**
|
|
22
|
+
** 1) If the position and velocity components of the two pv-vectors are
|
|
23
|
+
** ( ap, av ) and ( bp, bv ), the result, a x b, is the pair of
|
|
24
|
+
** vectors ( ap x bp, ap x bv + av x bp ). The two vectors are the
|
|
25
|
+
** cross-product of the two p-vectors and its derivative.
|
|
26
|
+
**
|
|
27
|
+
** 2) It is permissible to re-use the same array for any of the
|
|
28
|
+
** arguments.
|
|
29
|
+
**
|
|
30
|
+
** Called:
|
|
31
|
+
** iauCpv copy pv-vector
|
|
32
|
+
** iauPxp vector product of two p-vectors
|
|
33
|
+
** iauPpp p-vector plus p-vector
|
|
34
|
+
**
|
|
35
|
+
** This revision: 2008 November 18
|
|
36
|
+
**
|
|
37
|
+
** Original version 2012-03-01
|
|
38
|
+
**
|
|
39
|
+
** Copyright (C) 2013 Naoki Arita. See notes at end.
|
|
40
|
+
*/
|
|
41
|
+
{
|
|
42
|
+
double wa[2][3], wb[2][3], axbd[3], adxb[3];
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
/* Make copies of the inputs. */
|
|
46
|
+
iauCpv(a, wa);
|
|
47
|
+
iauCpv(b, wb);
|
|
48
|
+
|
|
49
|
+
/* a x b = position part of result. */
|
|
50
|
+
iauPxp(wa[0], wb[0], axb[0]);
|
|
51
|
+
|
|
52
|
+
/* a x bdot + adot x b = velocity part of result. */
|
|
53
|
+
iauPxp(wa[0], wb[1], axbd);
|
|
54
|
+
iauPxp(wa[1], wb[0], adxb);
|
|
55
|
+
iauPpp(axbd, adxb, axb[1]);
|
|
56
|
+
|
|
57
|
+
return;
|
|
58
|
+
|
|
59
|
+
/*----------------------------------------------------------------------
|
|
60
|
+
**
|
|
61
|
+
** Celes is a wrapper of the SOFA Library for Ruby.
|
|
62
|
+
**
|
|
63
|
+
** This file is redistributed and relicensed in accordance with
|
|
64
|
+
** the SOFA Software License (http://www.iausofa.org/tandc.html).
|
|
65
|
+
**
|
|
66
|
+
** The original library is available from IAU Standards of
|
|
67
|
+
** Fundamental Astronomy (http://www.iausofa.org/).
|
|
68
|
+
**
|
|
69
|
+
**
|
|
70
|
+
**
|
|
71
|
+
**
|
|
72
|
+
**
|
|
73
|
+
** Copyright (C) 2013, Naoki Arita
|
|
74
|
+
** All rights reserved.
|
|
75
|
+
**
|
|
76
|
+
** Redistribution and use in source and binary forms, with or without
|
|
77
|
+
** modification, are permitted provided that the following conditions
|
|
78
|
+
** are met:
|
|
79
|
+
**
|
|
80
|
+
** 1 Redistributions of source code must retain the above copyright
|
|
81
|
+
** notice, this list of conditions and the following disclaimer.
|
|
82
|
+
**
|
|
83
|
+
** 2 Redistributions in binary form must reproduce the above copyright
|
|
84
|
+
** notice, this list of conditions and the following disclaimer in
|
|
85
|
+
** the documentation and/or other materials provided with the
|
|
86
|
+
** distribution.
|
|
87
|
+
**
|
|
88
|
+
** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
|
|
89
|
+
** the International Astronomical Union nor the names of its
|
|
90
|
+
** contributors may be used to endorse or promote products derived
|
|
91
|
+
** from this software without specific prior written permission.
|
|
92
|
+
**
|
|
93
|
+
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
94
|
+
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
95
|
+
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
96
|
+
** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
97
|
+
** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
98
|
+
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
99
|
+
** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
100
|
+
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
101
|
+
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
102
|
+
** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
103
|
+
** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
104
|
+
** POSSIBILITY OF SUCH DAMAGE.
|
|
105
|
+
**
|
|
106
|
+
**--------------------------------------------------------------------*/
|
|
107
|
+
}
|
data/ext/celes/pxp.c
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#include "sofam.h"
|
|
2
|
+
|
|
3
|
+
void iauPxp(double a[3], double b[3], double axb[3])
|
|
4
|
+
/*
|
|
5
|
+
** - - - - - - -
|
|
6
|
+
** i a u P x p
|
|
7
|
+
** - - - - - - -
|
|
8
|
+
**
|
|
9
|
+
** p-vector outer (=vector=cross) product.
|
|
10
|
+
**
|
|
11
|
+
** Status: vector/matrix support function.
|
|
12
|
+
**
|
|
13
|
+
** Given:
|
|
14
|
+
** a double[3] first p-vector
|
|
15
|
+
** b double[3] second p-vector
|
|
16
|
+
**
|
|
17
|
+
** Returned:
|
|
18
|
+
** axb double[3] a x b
|
|
19
|
+
**
|
|
20
|
+
** Note:
|
|
21
|
+
** It is permissible to re-use the same array for any of the
|
|
22
|
+
** arguments.
|
|
23
|
+
**
|
|
24
|
+
** This revision: 2008 November 18
|
|
25
|
+
**
|
|
26
|
+
** Original version 2012-03-01
|
|
27
|
+
**
|
|
28
|
+
** Copyright (C) 2013 Naoki Arita. See notes at end.
|
|
29
|
+
*/
|
|
30
|
+
{
|
|
31
|
+
double xa, ya, za, xb, yb, zb;
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
xa = a[0];
|
|
35
|
+
ya = a[1];
|
|
36
|
+
za = a[2];
|
|
37
|
+
xb = b[0];
|
|
38
|
+
yb = b[1];
|
|
39
|
+
zb = b[2];
|
|
40
|
+
axb[0] = ya*zb - za*yb;
|
|
41
|
+
axb[1] = za*xb - xa*zb;
|
|
42
|
+
axb[2] = xa*yb - ya*xb;
|
|
43
|
+
|
|
44
|
+
return;
|
|
45
|
+
|
|
46
|
+
/*----------------------------------------------------------------------
|
|
47
|
+
**
|
|
48
|
+
** Celes is a wrapper of the SOFA Library for Ruby.
|
|
49
|
+
**
|
|
50
|
+
** This file is redistributed and relicensed in accordance with
|
|
51
|
+
** the SOFA Software License (http://www.iausofa.org/tandc.html).
|
|
52
|
+
**
|
|
53
|
+
** The original library is available from IAU Standards of
|
|
54
|
+
** Fundamental Astronomy (http://www.iausofa.org/).
|
|
55
|
+
**
|
|
56
|
+
**
|
|
57
|
+
**
|
|
58
|
+
**
|
|
59
|
+
**
|
|
60
|
+
** Copyright (C) 2013, Naoki Arita
|
|
61
|
+
** All rights reserved.
|
|
62
|
+
**
|
|
63
|
+
** Redistribution and use in source and binary forms, with or without
|
|
64
|
+
** modification, are permitted provided that the following conditions
|
|
65
|
+
** are met:
|
|
66
|
+
**
|
|
67
|
+
** 1 Redistributions of source code must retain the above copyright
|
|
68
|
+
** notice, this list of conditions and the following disclaimer.
|
|
69
|
+
**
|
|
70
|
+
** 2 Redistributions in binary form must reproduce the above copyright
|
|
71
|
+
** notice, this list of conditions and the following disclaimer in
|
|
72
|
+
** the documentation and/or other materials provided with the
|
|
73
|
+
** distribution.
|
|
74
|
+
**
|
|
75
|
+
** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
|
|
76
|
+
** the International Astronomical Union nor the names of its
|
|
77
|
+
** contributors may be used to endorse or promote products derived
|
|
78
|
+
** from this software without specific prior written permission.
|
|
79
|
+
**
|
|
80
|
+
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
81
|
+
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
82
|
+
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
83
|
+
** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
84
|
+
** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
85
|
+
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
86
|
+
** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
87
|
+
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
88
|
+
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
89
|
+
** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
90
|
+
** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
91
|
+
** POSSIBILITY OF SUCH DAMAGE.
|
|
92
|
+
**
|
|
93
|
+
**--------------------------------------------------------------------*/
|
|
94
|
+
}
|
data/ext/celes/rm2v.c
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#include "sofam.h"
|
|
2
|
+
|
|
3
|
+
void iauRm2v(double r[3][3], double w[3])
|
|
4
|
+
/*
|
|
5
|
+
** - - - - - - - -
|
|
6
|
+
** i a u R m 2 v
|
|
7
|
+
** - - - - - - - -
|
|
8
|
+
**
|
|
9
|
+
** Express an r-matrix as an r-vector.
|
|
10
|
+
**
|
|
11
|
+
** Status: vector/matrix support function.
|
|
12
|
+
**
|
|
13
|
+
** Given:
|
|
14
|
+
** r double[3][3] rotation matrix
|
|
15
|
+
**
|
|
16
|
+
** Returned:
|
|
17
|
+
** w double[3] rotation vector (Note 1)
|
|
18
|
+
**
|
|
19
|
+
** Notes:
|
|
20
|
+
**
|
|
21
|
+
** 1) A rotation matrix describes a rotation through some angle about
|
|
22
|
+
** some arbitrary axis called the Euler axis. The "rotation vector"
|
|
23
|
+
** returned by this function has the same direction as the Euler axis,
|
|
24
|
+
** and its magnitude is the angle in radians. (The magnitude and
|
|
25
|
+
** direction can be separated by means of the function iauPn.)
|
|
26
|
+
**
|
|
27
|
+
** 2) If r is null, so is the result. If r is not a rotation matrix
|
|
28
|
+
** the result is undefined; r must be proper (i.e. have a positive
|
|
29
|
+
** determinant) and real orthogonal (inverse = transpose).
|
|
30
|
+
**
|
|
31
|
+
** 3) The reference frame rotates clockwise as seen looking along
|
|
32
|
+
** the rotation vector from the origin.
|
|
33
|
+
**
|
|
34
|
+
** This revision: 2010 August 27
|
|
35
|
+
**
|
|
36
|
+
** Original version 2012-03-01
|
|
37
|
+
**
|
|
38
|
+
** Copyright (C) 2013 Naoki Arita. See notes at end.
|
|
39
|
+
*/
|
|
40
|
+
{
|
|
41
|
+
double x, y, z, s2, c2, phi, f;
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
x = r[1][2] - r[2][1];
|
|
45
|
+
y = r[2][0] - r[0][2];
|
|
46
|
+
z = r[0][1] - r[1][0];
|
|
47
|
+
s2 = sqrt(x*x + y*y + z*z);
|
|
48
|
+
if (s2 != 0) {
|
|
49
|
+
c2 = r[0][0] + r[1][1] + r[2][2] - 1.0;
|
|
50
|
+
phi = atan2(s2, c2);
|
|
51
|
+
f = phi / s2;
|
|
52
|
+
w[0] = x * f;
|
|
53
|
+
w[1] = y * f;
|
|
54
|
+
w[2] = z * f;
|
|
55
|
+
} else {
|
|
56
|
+
w[0] = 0.0;
|
|
57
|
+
w[1] = 0.0;
|
|
58
|
+
w[2] = 0.0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return;
|
|
62
|
+
|
|
63
|
+
/*----------------------------------------------------------------------
|
|
64
|
+
**
|
|
65
|
+
** Celes is a wrapper of the SOFA Library for Ruby.
|
|
66
|
+
**
|
|
67
|
+
** This file is redistributed and relicensed in accordance with
|
|
68
|
+
** the SOFA Software License (http://www.iausofa.org/tandc.html).
|
|
69
|
+
**
|
|
70
|
+
** The original library is available from IAU Standards of
|
|
71
|
+
** Fundamental Astronomy (http://www.iausofa.org/).
|
|
72
|
+
**
|
|
73
|
+
**
|
|
74
|
+
**
|
|
75
|
+
**
|
|
76
|
+
**
|
|
77
|
+
** Copyright (C) 2013, Naoki Arita
|
|
78
|
+
** All rights reserved.
|
|
79
|
+
**
|
|
80
|
+
** Redistribution and use in source and binary forms, with or without
|
|
81
|
+
** modification, are permitted provided that the following conditions
|
|
82
|
+
** are met:
|
|
83
|
+
**
|
|
84
|
+
** 1 Redistributions of source code must retain the above copyright
|
|
85
|
+
** notice, this list of conditions and the following disclaimer.
|
|
86
|
+
**
|
|
87
|
+
** 2 Redistributions in binary form must reproduce the above copyright
|
|
88
|
+
** notice, this list of conditions and the following disclaimer in
|
|
89
|
+
** the documentation and/or other materials provided with the
|
|
90
|
+
** distribution.
|
|
91
|
+
**
|
|
92
|
+
** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
|
|
93
|
+
** the International Astronomical Union nor the names of its
|
|
94
|
+
** contributors may be used to endorse or promote products derived
|
|
95
|
+
** from this software without specific prior written permission.
|
|
96
|
+
**
|
|
97
|
+
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
98
|
+
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
99
|
+
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
100
|
+
** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
101
|
+
** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
102
|
+
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
103
|
+
** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
104
|
+
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
105
|
+
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
106
|
+
** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
107
|
+
** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
108
|
+
** POSSIBILITY OF SUCH DAMAGE.
|
|
109
|
+
**
|
|
110
|
+
**--------------------------------------------------------------------*/
|
|
111
|
+
}
|
data/ext/celes/rv2m.c
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
#include "sofam.h"
|
|
2
|
+
|
|
3
|
+
void iauRv2m(double w[3], double r[3][3])
|
|
4
|
+
/*
|
|
5
|
+
** - - - - - - - -
|
|
6
|
+
** i a u R v 2 m
|
|
7
|
+
** - - - - - - - -
|
|
8
|
+
**
|
|
9
|
+
** Form the r-matrix corresponding to a given r-vector.
|
|
10
|
+
**
|
|
11
|
+
** Status: vector/matrix support function.
|
|
12
|
+
**
|
|
13
|
+
** Given:
|
|
14
|
+
** w double[3] rotation vector (Note 1)
|
|
15
|
+
**
|
|
16
|
+
** Returned:
|
|
17
|
+
** r double[3][3] rotation matrix
|
|
18
|
+
**
|
|
19
|
+
** Notes:
|
|
20
|
+
**
|
|
21
|
+
** 1) A rotation matrix describes a rotation through some angle about
|
|
22
|
+
** some arbitrary axis called the Euler axis. The "rotation vector"
|
|
23
|
+
** supplied to This function has the same direction as the Euler
|
|
24
|
+
** axis, and its magnitude is the angle in radians.
|
|
25
|
+
**
|
|
26
|
+
** 2) If w is null, the unit matrix is returned.
|
|
27
|
+
**
|
|
28
|
+
** 3) The reference frame rotates clockwise as seen looking along the
|
|
29
|
+
** rotation vector from the origin.
|
|
30
|
+
**
|
|
31
|
+
** This revision: 2008 May 11
|
|
32
|
+
**
|
|
33
|
+
** Original version 2012-03-01
|
|
34
|
+
**
|
|
35
|
+
** Copyright (C) 2013 Naoki Arita. See notes at end.
|
|
36
|
+
*/
|
|
37
|
+
{
|
|
38
|
+
double x, y, z, phi, s, c, f;
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
/* Euler angle (magnitude of rotation vector) and functions. */
|
|
42
|
+
x = w[0];
|
|
43
|
+
y = w[1];
|
|
44
|
+
z = w[2];
|
|
45
|
+
phi = sqrt(x*x + y*y + z*z);
|
|
46
|
+
s = sin(phi);
|
|
47
|
+
c = cos(phi);
|
|
48
|
+
f = 1.0 - c;
|
|
49
|
+
|
|
50
|
+
/* Euler axis (direction of rotation vector), perhaps null. */
|
|
51
|
+
if (phi != 0.0) {
|
|
52
|
+
x /= phi;
|
|
53
|
+
y /= phi;
|
|
54
|
+
z /= phi;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* Form the rotation matrix. */
|
|
58
|
+
r[0][0] = x*x*f + c;
|
|
59
|
+
r[0][1] = x*y*f + z*s;
|
|
60
|
+
r[0][2] = x*z*f - y*s;
|
|
61
|
+
r[1][0] = y*x*f - z*s;
|
|
62
|
+
r[1][1] = y*y*f + c;
|
|
63
|
+
r[1][2] = y*z*f + x*s;
|
|
64
|
+
r[2][0] = z*x*f + y*s;
|
|
65
|
+
r[2][1] = z*y*f - x*s;
|
|
66
|
+
r[2][2] = z*z*f + c;
|
|
67
|
+
|
|
68
|
+
return;
|
|
69
|
+
|
|
70
|
+
/*----------------------------------------------------------------------
|
|
71
|
+
**
|
|
72
|
+
** Celes is a wrapper of the SOFA Library for Ruby.
|
|
73
|
+
**
|
|
74
|
+
** This file is redistributed and relicensed in accordance with
|
|
75
|
+
** the SOFA Software License (http://www.iausofa.org/tandc.html).
|
|
76
|
+
**
|
|
77
|
+
** The original library is available from IAU Standards of
|
|
78
|
+
** Fundamental Astronomy (http://www.iausofa.org/).
|
|
79
|
+
**
|
|
80
|
+
**
|
|
81
|
+
**
|
|
82
|
+
**
|
|
83
|
+
**
|
|
84
|
+
** Copyright (C) 2013, Naoki Arita
|
|
85
|
+
** All rights reserved.
|
|
86
|
+
**
|
|
87
|
+
** Redistribution and use in source and binary forms, with or without
|
|
88
|
+
** modification, are permitted provided that the following conditions
|
|
89
|
+
** are met:
|
|
90
|
+
**
|
|
91
|
+
** 1 Redistributions of source code must retain the above copyright
|
|
92
|
+
** notice, this list of conditions and the following disclaimer.
|
|
93
|
+
**
|
|
94
|
+
** 2 Redistributions in binary form must reproduce the above copyright
|
|
95
|
+
** notice, this list of conditions and the following disclaimer in
|
|
96
|
+
** the documentation and/or other materials provided with the
|
|
97
|
+
** distribution.
|
|
98
|
+
**
|
|
99
|
+
** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
|
|
100
|
+
** the International Astronomical Union nor the names of its
|
|
101
|
+
** contributors may be used to endorse or promote products derived
|
|
102
|
+
** from this software without specific prior written permission.
|
|
103
|
+
**
|
|
104
|
+
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
105
|
+
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
106
|
+
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
107
|
+
** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
108
|
+
** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
109
|
+
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
110
|
+
** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
111
|
+
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
112
|
+
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
113
|
+
** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
114
|
+
** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
115
|
+
** POSSIBILITY OF SUCH DAMAGE.
|
|
116
|
+
**
|
|
117
|
+
**--------------------------------------------------------------------*/
|
|
118
|
+
}
|
data/ext/celes/rx.c
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#include "sofam.h"
|
|
2
|
+
|
|
3
|
+
void iauRx(double phi, double r[3][3])
|
|
4
|
+
/*
|
|
5
|
+
** - - - - - -
|
|
6
|
+
** i a u R x
|
|
7
|
+
** - - - - - -
|
|
8
|
+
**
|
|
9
|
+
** Rotate an r-matrix about the x-axis.
|
|
10
|
+
**
|
|
11
|
+
** Status: vector/matrix support function.
|
|
12
|
+
**
|
|
13
|
+
** Given:
|
|
14
|
+
** phi double angle (radians)
|
|
15
|
+
**
|
|
16
|
+
** Given and returned:
|
|
17
|
+
** r double[3][3] r-matrix, rotated
|
|
18
|
+
**
|
|
19
|
+
** Notes:
|
|
20
|
+
**
|
|
21
|
+
** 1) Calling this function with positive phi incorporates in the
|
|
22
|
+
** supplied r-matrix r an additional rotation, about the x-axis,
|
|
23
|
+
** anticlockwise as seen looking towards the origin from positive x.
|
|
24
|
+
**
|
|
25
|
+
** 2) The additional rotation can be represented by this matrix:
|
|
26
|
+
**
|
|
27
|
+
** ( 1 0 0 )
|
|
28
|
+
** ( )
|
|
29
|
+
** ( 0 + cos(phi) + sin(phi) )
|
|
30
|
+
** ( )
|
|
31
|
+
** ( 0 - sin(phi) + cos(phi) )
|
|
32
|
+
**
|
|
33
|
+
** This revision: 2012 April 3
|
|
34
|
+
**
|
|
35
|
+
** Original version 2012-03-01
|
|
36
|
+
**
|
|
37
|
+
** Copyright (C) 2013 Naoki Arita. See notes at end.
|
|
38
|
+
*/
|
|
39
|
+
{
|
|
40
|
+
double s, c, a10, a11, a12, a20, a21, a22;
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
s = sin(phi);
|
|
44
|
+
c = cos(phi);
|
|
45
|
+
|
|
46
|
+
a10 = c*r[1][0] + s*r[2][0];
|
|
47
|
+
a11 = c*r[1][1] + s*r[2][1];
|
|
48
|
+
a12 = c*r[1][2] + s*r[2][2];
|
|
49
|
+
a20 = - s*r[1][0] + c*r[2][0];
|
|
50
|
+
a21 = - s*r[1][1] + c*r[2][1];
|
|
51
|
+
a22 = - s*r[1][2] + c*r[2][2];
|
|
52
|
+
|
|
53
|
+
r[1][0] = a10;
|
|
54
|
+
r[1][1] = a11;
|
|
55
|
+
r[1][2] = a12;
|
|
56
|
+
r[2][0] = a20;
|
|
57
|
+
r[2][1] = a21;
|
|
58
|
+
r[2][2] = a22;
|
|
59
|
+
|
|
60
|
+
return;
|
|
61
|
+
|
|
62
|
+
/*----------------------------------------------------------------------
|
|
63
|
+
**
|
|
64
|
+
** Celes is a wrapper of the SOFA Library for Ruby.
|
|
65
|
+
**
|
|
66
|
+
** This file is redistributed and relicensed in accordance with
|
|
67
|
+
** the SOFA Software License (http://www.iausofa.org/tandc.html).
|
|
68
|
+
**
|
|
69
|
+
** The original library is available from IAU Standards of
|
|
70
|
+
** Fundamental Astronomy (http://www.iausofa.org/).
|
|
71
|
+
**
|
|
72
|
+
**
|
|
73
|
+
**
|
|
74
|
+
**
|
|
75
|
+
**
|
|
76
|
+
** Copyright (C) 2013, Naoki Arita
|
|
77
|
+
** All rights reserved.
|
|
78
|
+
**
|
|
79
|
+
** Redistribution and use in source and binary forms, with or without
|
|
80
|
+
** modification, are permitted provided that the following conditions
|
|
81
|
+
** are met:
|
|
82
|
+
**
|
|
83
|
+
** 1 Redistributions of source code must retain the above copyright
|
|
84
|
+
** notice, this list of conditions and the following disclaimer.
|
|
85
|
+
**
|
|
86
|
+
** 2 Redistributions in binary form must reproduce the above copyright
|
|
87
|
+
** notice, this list of conditions and the following disclaimer in
|
|
88
|
+
** the documentation and/or other materials provided with the
|
|
89
|
+
** distribution.
|
|
90
|
+
**
|
|
91
|
+
** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
|
|
92
|
+
** the International Astronomical Union nor the names of its
|
|
93
|
+
** contributors may be used to endorse or promote products derived
|
|
94
|
+
** from this software without specific prior written permission.
|
|
95
|
+
**
|
|
96
|
+
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
97
|
+
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
98
|
+
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
99
|
+
** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
100
|
+
** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
101
|
+
** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
102
|
+
** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
103
|
+
** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
104
|
+
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
105
|
+
** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
106
|
+
** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
107
|
+
** POSSIBILITY OF SUCH DAMAGE.
|
|
108
|
+
**
|
|
109
|
+
**--------------------------------------------------------------------*/
|
|
110
|
+
}
|