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.
Files changed (202) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +32 -0
  4. data/README.md +179 -0
  5. data/Rakefile +1 -0
  6. data/celes.gemspec +22 -0
  7. data/ext/celes/a2af.c +120 -0
  8. data/ext/celes/a2tf.c +116 -0
  9. data/ext/celes/af2a.c +107 -0
  10. data/ext/celes/anp.c +82 -0
  11. data/ext/celes/anpm.c +82 -0
  12. data/ext/celes/bi00.c +116 -0
  13. data/ext/celes/bp00.c +173 -0
  14. data/ext/celes/bp06.c +136 -0
  15. data/ext/celes/bpn2xy.c +100 -0
  16. data/ext/celes/c2i00a.c +139 -0
  17. data/ext/celes/c2i00b.c +139 -0
  18. data/ext/celes/c2i06a.c +136 -0
  19. data/ext/celes/c2ibpn.c +142 -0
  20. data/ext/celes/c2ixy.c +131 -0
  21. data/ext/celes/c2ixys.c +123 -0
  22. data/ext/celes/c2s.c +96 -0
  23. data/ext/celes/c2t00a.c +154 -0
  24. data/ext/celes/c2t00b.c +150 -0
  25. data/ext/celes/c2t06a.c +152 -0
  26. data/ext/celes/c2tcio.c +122 -0
  27. data/ext/celes/c2teqx.c +122 -0
  28. data/ext/celes/c2tpe.c +167 -0
  29. data/ext/celes/c2txy.c +159 -0
  30. data/ext/celes/cal2jd.c +139 -0
  31. data/ext/celes/celes_core.c +2522 -0
  32. data/ext/celes/cp.c +80 -0
  33. data/ext/celes/cpv.c +82 -0
  34. data/ext/celes/cr.c +83 -0
  35. data/ext/celes/d2dtf.c +206 -0
  36. data/ext/celes/d2tf.c +160 -0
  37. data/ext/celes/dat.c +289 -0
  38. data/ext/celes/depend +25 -0
  39. data/ext/celes/dtdb.c +1213 -0
  40. data/ext/celes/dtf2d.c +196 -0
  41. data/ext/celes/ee00.c +128 -0
  42. data/ext/celes/ee00a.c +135 -0
  43. data/ext/celes/ee00b.c +141 -0
  44. data/ext/celes/ee06a.c +122 -0
  45. data/ext/celes/eect00.c +282 -0
  46. data/ext/celes/eform.c +147 -0
  47. data/ext/celes/eo06a.c +131 -0
  48. data/ext/celes/eors.c +108 -0
  49. data/ext/celes/epb.c +96 -0
  50. data/ext/celes/epb2jd.c +91 -0
  51. data/ext/celes/epj.c +93 -0
  52. data/ext/celes/epj2jd.c +91 -0
  53. data/ext/celes/epv00.c +2589 -0
  54. data/ext/celes/eqeq94.c +131 -0
  55. data/ext/celes/era00.c +136 -0
  56. data/ext/celes/extconf.rb +4 -0
  57. data/ext/celes/fad03.c +103 -0
  58. data/ext/celes/fae03.c +102 -0
  59. data/ext/celes/faf03.c +106 -0
  60. data/ext/celes/faju03.c +102 -0
  61. data/ext/celes/fal03.c +103 -0
  62. data/ext/celes/falp03.c +103 -0
  63. data/ext/celes/fama03.c +102 -0
  64. data/ext/celes/fame03.c +102 -0
  65. data/ext/celes/fane03.c +99 -0
  66. data/ext/celes/faom03.c +104 -0
  67. data/ext/celes/fapa03.c +103 -0
  68. data/ext/celes/fasa03.c +102 -0
  69. data/ext/celes/faur03.c +99 -0
  70. data/ext/celes/fave03.c +102 -0
  71. data/ext/celes/fk52h.c +143 -0
  72. data/ext/celes/fk5hip.c +126 -0
  73. data/ext/celes/fk5hz.c +160 -0
  74. data/ext/celes/fw2m.c +134 -0
  75. data/ext/celes/fw2xy.c +120 -0
  76. data/ext/celes/gc2gd.c +134 -0
  77. data/ext/celes/gc2gde.c +200 -0
  78. data/ext/celes/gd2gc.c +134 -0
  79. data/ext/celes/gd2gce.c +138 -0
  80. data/ext/celes/gmst00.c +145 -0
  81. data/ext/celes/gmst06.c +136 -0
  82. data/ext/celes/gmst82.c +151 -0
  83. data/ext/celes/gst00a.c +138 -0
  84. data/ext/celes/gst00b.c +146 -0
  85. data/ext/celes/gst06.c +140 -0
  86. data/ext/celes/gst06a.c +131 -0
  87. data/ext/celes/gst94.c +131 -0
  88. data/ext/celes/h2fk5.c +148 -0
  89. data/ext/celes/hfk5z.c +175 -0
  90. data/ext/celes/ir.c +83 -0
  91. data/ext/celes/jd2cal.c +155 -0
  92. data/ext/celes/jdcalf.c +161 -0
  93. data/ext/celes/num00a.c +121 -0
  94. data/ext/celes/num00b.c +121 -0
  95. data/ext/celes/num06a.c +125 -0
  96. data/ext/celes/numat.c +109 -0
  97. data/ext/celes/nut00a.c +2047 -0
  98. data/ext/celes/nut00b.c +372 -0
  99. data/ext/celes/nut06a.c +153 -0
  100. data/ext/celes/nut80.c +325 -0
  101. data/ext/celes/nutm80.c +117 -0
  102. data/ext/celes/obl06.c +118 -0
  103. data/ext/celes/obl80.c +118 -0
  104. data/ext/celes/p06e.c +321 -0
  105. data/ext/celes/p2pv.c +83 -0
  106. data/ext/celes/p2s.c +91 -0
  107. data/ext/celes/pap.c +139 -0
  108. data/ext/celes/pas.c +96 -0
  109. data/ext/celes/pb06.c +144 -0
  110. data/ext/celes/pdp.c +84 -0
  111. data/ext/celes/pfw06.c +165 -0
  112. data/ext/celes/plan94.c +514 -0
  113. data/ext/celes/pm.c +83 -0
  114. data/ext/celes/pmat00.c +118 -0
  115. data/ext/celes/pmat06.c +122 -0
  116. data/ext/celes/pmat76.c +141 -0
  117. data/ext/celes/pmp.c +85 -0
  118. data/ext/celes/pn.c +109 -0
  119. data/ext/celes/pn00.c +177 -0
  120. data/ext/celes/pn00a.c +162 -0
  121. data/ext/celes/pn00b.c +162 -0
  122. data/ext/celes/pn06.c +187 -0
  123. data/ext/celes/pn06a.c +152 -0
  124. data/ext/celes/pnm00a.c +121 -0
  125. data/ext/celes/pnm00b.c +121 -0
  126. data/ext/celes/pnm06a.c +124 -0
  127. data/ext/celes/pnm80.c +126 -0
  128. data/ext/celes/pom00.c +115 -0
  129. data/ext/celes/ppp.c +85 -0
  130. data/ext/celes/ppsp.c +94 -0
  131. data/ext/celes/pr00.c +142 -0
  132. data/ext/celes/prec76.c +148 -0
  133. data/ext/celes/pv2p.c +81 -0
  134. data/ext/celes/pv2s.c +144 -0
  135. data/ext/celes/pvdpv.c +102 -0
  136. data/ext/celes/pvm.c +86 -0
  137. data/ext/celes/pvmpv.c +87 -0
  138. data/ext/celes/pvppv.c +87 -0
  139. data/ext/celes/pvstar.c +207 -0
  140. data/ext/celes/pvu.c +93 -0
  141. data/ext/celes/pvup.c +88 -0
  142. data/ext/celes/pvxpv.c +107 -0
  143. data/ext/celes/pxp.c +94 -0
  144. data/ext/celes/rm2v.c +111 -0
  145. data/ext/celes/rv2m.c +118 -0
  146. data/ext/celes/rx.c +110 -0
  147. data/ext/celes/rxp.c +99 -0
  148. data/ext/celes/rxpv.c +86 -0
  149. data/ext/celes/rxr.c +99 -0
  150. data/ext/celes/ry.c +110 -0
  151. data/ext/celes/rz.c +110 -0
  152. data/ext/celes/s00.c +371 -0
  153. data/ext/celes/s00a.c +143 -0
  154. data/ext/celes/s00b.c +143 -0
  155. data/ext/celes/s06.c +368 -0
  156. data/ext/celes/s06a.c +145 -0
  157. data/ext/celes/s2c.c +85 -0
  158. data/ext/celes/s2p.c +88 -0
  159. data/ext/celes/s2pv.c +103 -0
  160. data/ext/celes/s2xpv.c +87 -0
  161. data/ext/celes/sepp.c +105 -0
  162. data/ext/celes/seps.c +93 -0
  163. data/ext/celes/sofa.h +379 -0
  164. data/ext/celes/sofam.h +155 -0
  165. data/ext/celes/sp00.c +118 -0
  166. data/ext/celes/starpm.c +205 -0
  167. data/ext/celes/starpv.c +264 -0
  168. data/ext/celes/sxp.c +84 -0
  169. data/ext/celes/sxpv.c +85 -0
  170. data/ext/celes/taitt.c +110 -0
  171. data/ext/celes/taiut1.c +112 -0
  172. data/ext/celes/taiutc.c +182 -0
  173. data/ext/celes/tcbtdb.c +132 -0
  174. data/ext/celes/tcgtt.c +109 -0
  175. data/ext/celes/tdbtcb.c +137 -0
  176. data/ext/celes/tdbtt.c +122 -0
  177. data/ext/celes/tf2a.c +107 -0
  178. data/ext/celes/tf2d.c +107 -0
  179. data/ext/celes/tr.c +93 -0
  180. data/ext/celes/trxp.c +93 -0
  181. data/ext/celes/trxpv.c +93 -0
  182. data/ext/celes/tttai.c +110 -0
  183. data/ext/celes/tttcg.c +112 -0
  184. data/ext/celes/tttdb.c +121 -0
  185. data/ext/celes/ttut1.c +110 -0
  186. data/ext/celes/ut1tai.c +111 -0
  187. data/ext/celes/ut1tt.c +110 -0
  188. data/ext/celes/ut1utc.c +193 -0
  189. data/ext/celes/utctai.c +163 -0
  190. data/ext/celes/utcut1.c +151 -0
  191. data/ext/celes/xy06.c +2758 -0
  192. data/ext/celes/xys00a.c +133 -0
  193. data/ext/celes/xys00b.c +133 -0
  194. data/ext/celes/xys06a.c +133 -0
  195. data/ext/celes/zp.c +77 -0
  196. data/ext/celes/zpv.c +79 -0
  197. data/ext/celes/zr.c +83 -0
  198. data/lib/celes.rb +6 -0
  199. data/lib/celes/version.rb +3 -0
  200. data/sofa_20120301.diff +31384 -0
  201. data/test/t_sofa.rb +8228 -0
  202. metadata +251 -0
@@ -0,0 +1,200 @@
1
+ #include "sofam.h"
2
+
3
+ int iauGc2gde ( double a, double f, double xyz[3],
4
+ double *elong, double *phi, double *height )
5
+ /*
6
+ ** - - - - - - - - - -
7
+ ** i a u G c 2 g d e
8
+ ** - - - - - - - - - -
9
+ **
10
+ ** Transform geocentric coordinates to geodetic for a reference
11
+ ** ellipsoid of specified form.
12
+ **
13
+ ** Status: support function.
14
+ **
15
+ ** Given:
16
+ ** a double equatorial radius (Notes 2,4)
17
+ ** f double flattening (Note 3)
18
+ ** xyz double[3] geocentric vector (Note 4)
19
+ **
20
+ ** Returned:
21
+ ** elong double longitude (radians, east +ve)
22
+ ** phi double latitude (geodetic, radians)
23
+ ** height double height above ellipsoid (geodetic, Note 4)
24
+ **
25
+ ** Returned (function value):
26
+ ** int status: 0 = OK
27
+ ** -1 = illegal f
28
+ ** -2 = illegal a
29
+ **
30
+ ** Notes:
31
+ **
32
+ ** 1) This function is based on the GCONV2H Fortran subroutine by
33
+ ** Toshio Fukushima (see reference).
34
+ **
35
+ ** 2) The equatorial radius, a, can be in any units, but meters is
36
+ ** the conventional choice.
37
+ **
38
+ ** 3) The flattening, f, is (for the Earth) a value around 0.00335,
39
+ ** i.e. around 1/298.
40
+ **
41
+ ** 4) The equatorial radius, a, and the geocentric vector, xyz,
42
+ ** must be given in the same units, and determine the units of
43
+ ** the returned height, height.
44
+ **
45
+ ** 5) If an error occurs (status < 0), elong, phi and height are
46
+ ** unchanged.
47
+ **
48
+ ** 6) The inverse transformation is performed in the function
49
+ ** iauGd2gce.
50
+ **
51
+ ** 7) The transformation for a standard ellipsoid (such as WGS84) can
52
+ ** more conveniently be performed by calling iauGc2gd, which uses a
53
+ ** numerical code to identify the required A and F values.
54
+ **
55
+ ** Reference:
56
+ **
57
+ ** Fukushima, T., "Transformation from Cartesian to geodetic
58
+ ** coordinates accelerated by Halley's method", J.Geodesy (2006)
59
+ ** 79: 689-693
60
+ **
61
+ ** This revision: 2012 February 23
62
+ **
63
+ ** Original version 2012-03-01
64
+ **
65
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
66
+ */
67
+ {
68
+ double aeps2, e2, e4t, ec2, ec, b, x, y, z, p2, absz, p, s0, pn, zc,
69
+ c0, c02, c03, s02, s03, a02, a0, a03, d0, f0, b0, s1,
70
+ cc, s12, cc2;
71
+
72
+
73
+ /* ------------- */
74
+ /* Preliminaries */
75
+ /* ------------- */
76
+
77
+ /* Validate ellipsoid parameters. */
78
+ if ( f < 0.0 || f >= 1.0 ) return -1;
79
+ if ( a <= 0.0 ) return -2;
80
+
81
+ /* Functions of ellipsoid parameters (with further validation of f). */
82
+ aeps2 = a*a * 1e-32;
83
+ e2 = (2.0 - f) * f;
84
+ e4t = e2*e2 * 1.5;
85
+ ec2 = 1.0 - e2;
86
+ if ( ec2 <= 0.0 ) return -1;
87
+ ec = sqrt(ec2);
88
+ b = a * ec;
89
+
90
+ /* Cartesian components. */
91
+ x = xyz[0];
92
+ y = xyz[1];
93
+ z = xyz[2];
94
+
95
+ /* Distance from polar axis squared. */
96
+ p2 = x*x + y*y;
97
+
98
+ /* Longitude. */
99
+ *elong = p2 != 0.0 ? atan2(y, x) : 0.0;
100
+
101
+ /* Unsigned z-coordinate. */
102
+ absz = fabs(z);
103
+
104
+ /* Proceed unless polar case. */
105
+ if ( p2 > aeps2 ) {
106
+
107
+ /* Distance from polar axis. */
108
+ p = sqrt(p2);
109
+
110
+ /* Normalization. */
111
+ s0 = absz / a;
112
+ pn = p / a;
113
+ zc = ec * s0;
114
+
115
+ /* Prepare Newton correction factors. */
116
+ c0 = ec * pn;
117
+ c02 = c0 * c0;
118
+ c03 = c02 * c0;
119
+ s02 = s0 * s0;
120
+ s03 = s02 * s0;
121
+ a02 = c02 + s02;
122
+ a0 = sqrt(a02);
123
+ a03 = a02 * a0;
124
+ d0 = zc*a03 + e2*s03;
125
+ f0 = pn*a03 - e2*c03;
126
+
127
+ /* Prepare Halley correction factor. */
128
+ b0 = e4t * s02 * c02 * pn * (a0 - ec);
129
+ s1 = d0*f0 - b0*s0;
130
+ cc = ec * (f0*f0 - b0*c0);
131
+
132
+ /* Evaluate latitude and height. */
133
+ *phi = atan(s1/cc);
134
+ s12 = s1 * s1;
135
+ cc2 = cc * cc;
136
+ *height = (p*cc + absz*s1 - a * sqrt(ec2*s12 + cc2)) /
137
+ sqrt(s12 + cc2);
138
+ } else {
139
+
140
+ /* Exception: pole. */
141
+ *phi = DPI / 2.0;
142
+ *height = absz - b;
143
+ }
144
+
145
+ /* Restore sign of latitude. */
146
+ if ( z < 0 ) *phi = -*phi;
147
+
148
+ /* OK status. */
149
+ return 0;
150
+
151
+ /*----------------------------------------------------------------------
152
+ **
153
+ ** Celes is a wrapper of the SOFA Library for Ruby.
154
+ **
155
+ ** This file is redistributed and relicensed in accordance with
156
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
157
+ **
158
+ ** The original library is available from IAU Standards of
159
+ ** Fundamental Astronomy (http://www.iausofa.org/).
160
+ **
161
+ **
162
+ **
163
+ **
164
+ **
165
+ ** Copyright (C) 2013, Naoki Arita
166
+ ** All rights reserved.
167
+ **
168
+ ** Redistribution and use in source and binary forms, with or without
169
+ ** modification, are permitted provided that the following conditions
170
+ ** are met:
171
+ **
172
+ ** 1 Redistributions of source code must retain the above copyright
173
+ ** notice, this list of conditions and the following disclaimer.
174
+ **
175
+ ** 2 Redistributions in binary form must reproduce the above copyright
176
+ ** notice, this list of conditions and the following disclaimer in
177
+ ** the documentation and/or other materials provided with the
178
+ ** distribution.
179
+ **
180
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
181
+ ** the International Astronomical Union nor the names of its
182
+ ** contributors may be used to endorse or promote products derived
183
+ ** from this software without specific prior written permission.
184
+ **
185
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
186
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
187
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
188
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
189
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
190
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
191
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
192
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
193
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
194
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
195
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
196
+ ** POSSIBILITY OF SUCH DAMAGE.
197
+ **
198
+ **--------------------------------------------------------------------*/
199
+
200
+ }
@@ -0,0 +1,134 @@
1
+ #include "sofam.h"
2
+
3
+ int iauGd2gc ( int n, double elong, double phi, double height,
4
+ double xyz[3] )
5
+ /*
6
+ ** - - - - - - - - -
7
+ ** i a u G d 2 g c
8
+ ** - - - - - - - - -
9
+ **
10
+ ** Transform geodetic coordinates to geocentric using the specified
11
+ ** reference ellipsoid.
12
+ **
13
+ ** Status: canonical transformation.
14
+ **
15
+ ** Given:
16
+ ** n int ellipsoid identifier (Note 1)
17
+ ** elong double longitude (radians, east +ve)
18
+ ** phi double latitude (geodetic, radians, Note 3)
19
+ ** height double height above ellipsoid (geodetic, Notes 2,3)
20
+ **
21
+ ** Returned:
22
+ ** xyz double[3] geocentric vector (Note 2)
23
+ **
24
+ ** Returned (function value):
25
+ ** int status: 0 = OK
26
+ ** -1 = illegal identifier (Note 3)
27
+ ** -2 = illegal case (Note 3)
28
+ **
29
+ ** Notes:
30
+ **
31
+ ** 1) The identifier n is a number that specifies the choice of
32
+ ** reference ellipsoid. The following are supported:
33
+ **
34
+ ** n ellipsoid
35
+ **
36
+ ** 1 WGS84
37
+ ** 2 GRS80
38
+ ** 3 WGS72
39
+ **
40
+ ** The n value has no significance outside the SOFA software. For
41
+ ** convenience, symbols WGS84 etc. are defined in sofam.h.
42
+ **
43
+ ** 2) The height (height, given) and the geocentric vector (xyz,
44
+ ** returned) are in meters.
45
+ **
46
+ ** 3) No validation is performed on the arguments elong, phi and
47
+ ** height. An error status -1 means that the identifier n is
48
+ ** illegal. An error status -2 protects against cases that would
49
+ ** lead to arithmetic exceptions. In all error cases, xyz is set
50
+ ** to zeros.
51
+ **
52
+ ** 4) The inverse transformation is performed in the function iauGc2gd.
53
+ **
54
+ ** Called:
55
+ ** iauEform Earth reference ellipsoids
56
+ ** iauGd2gce geodetic to geocentric transformation, general
57
+ ** iauZp zero p-vector
58
+ **
59
+ ** This revision: 2012 February 23
60
+ **
61
+ ** Original version 2012-03-01
62
+ **
63
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
64
+ */
65
+ {
66
+ int j;
67
+ double a, f;
68
+
69
+
70
+ /* Obtain reference ellipsoid parameters. */
71
+ j = iauEform ( n, &a, &f );
72
+
73
+ /* If OK, transform longitude, geodetic latitude, height to x,y,z. */
74
+ if ( j == 0 ) {
75
+ j = iauGd2gce ( a, f, elong, phi, height, xyz );
76
+ if ( j != 0 ) j = -2;
77
+ }
78
+
79
+ /* Deal with any errors. */
80
+ if ( j != 0 ) iauZp ( xyz );
81
+
82
+ /* Return the status. */
83
+ return j;
84
+
85
+ /*----------------------------------------------------------------------
86
+ **
87
+ ** Celes is a wrapper of the SOFA Library for Ruby.
88
+ **
89
+ ** This file is redistributed and relicensed in accordance with
90
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
91
+ **
92
+ ** The original library is available from IAU Standards of
93
+ ** Fundamental Astronomy (http://www.iausofa.org/).
94
+ **
95
+ **
96
+ **
97
+ **
98
+ **
99
+ ** Copyright (C) 2013, Naoki Arita
100
+ ** All rights reserved.
101
+ **
102
+ ** Redistribution and use in source and binary forms, with or without
103
+ ** modification, are permitted provided that the following conditions
104
+ ** are met:
105
+ **
106
+ ** 1 Redistributions of source code must retain the above copyright
107
+ ** notice, this list of conditions and the following disclaimer.
108
+ **
109
+ ** 2 Redistributions in binary form must reproduce the above copyright
110
+ ** notice, this list of conditions and the following disclaimer in
111
+ ** the documentation and/or other materials provided with the
112
+ ** distribution.
113
+ **
114
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
115
+ ** the International Astronomical Union nor the names of its
116
+ ** contributors may be used to endorse or promote products derived
117
+ ** from this software without specific prior written permission.
118
+ **
119
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
120
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
121
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
122
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
123
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
124
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
125
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
126
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
127
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
128
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
129
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
130
+ ** POSSIBILITY OF SUCH DAMAGE.
131
+ **
132
+ **--------------------------------------------------------------------*/
133
+
134
+ }
@@ -0,0 +1,138 @@
1
+ #include "sofam.h"
2
+
3
+ int iauGd2gce ( double a, double f, double elong, double phi,
4
+ double height, double xyz[3] )
5
+ /*
6
+ ** - - - - - - - - - -
7
+ ** i a u G d 2 g c e
8
+ ** - - - - - - - - - -
9
+ **
10
+ ** Transform geodetic coordinates to geocentric for a reference
11
+ ** ellipsoid of specified form.
12
+ **
13
+ ** Status: support function.
14
+ **
15
+ ** Given:
16
+ ** a double equatorial radius (Notes 1,4)
17
+ ** f double flattening (Notes 2,4)
18
+ ** elong double longitude (radians, east +ve)
19
+ ** phi double latitude (geodetic, radians, Note 4)
20
+ ** height double height above ellipsoid (geodetic, Notes 3,4)
21
+ **
22
+ ** Returned:
23
+ ** xyz double[3] geocentric vector (Note 3)
24
+ **
25
+ ** Returned (function value):
26
+ ** int status: 0 = OK
27
+ ** -1 = illegal case (Note 4)
28
+ ** Notes:
29
+ **
30
+ ** 1) The equatorial radius, a, can be in any units, but meters is
31
+ ** the conventional choice.
32
+ **
33
+ ** 2) The flattening, f, is (for the Earth) a value around 0.00335,
34
+ ** i.e. around 1/298.
35
+ **
36
+ ** 3) The equatorial radius, a, and the height, height, must be
37
+ ** given in the same units, and determine the units of the
38
+ ** returned geocentric vector, xyz.
39
+ **
40
+ ** 4) No validation is performed on individual arguments. The error
41
+ ** status -1 protects against (unrealistic) cases that would lead
42
+ ** to arithmetic exceptions. If an error occurs, xyz is unchanged.
43
+ **
44
+ ** 5) The inverse transformation is performed in the function
45
+ ** iauGc2gde.
46
+ **
47
+ ** 6) The transformation for a standard ellipsoid (such as WGS84) can
48
+ ** more conveniently be performed by calling iauGd2gc, which uses a
49
+ ** numerical code to identify the required a and f values.
50
+ **
51
+ ** References:
52
+ **
53
+ ** Green, R.M., Spherical Astronomy, Cambridge University Press,
54
+ ** (1985) Section 4.5, p96.
55
+ **
56
+ ** Explanatory Supplement to the Astronomical Almanac,
57
+ ** P. Kenneth Seidelmann (ed), University Science Books (1992),
58
+ ** Section 4.22, p202.
59
+ **
60
+ ** This revision: 2012 February 23
61
+ **
62
+ ** Original version 2012-03-01
63
+ **
64
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
65
+ */
66
+ {
67
+ double sp, cp, w, d, ac, as, r;
68
+
69
+
70
+ /* Functions of geodetic latitude. */
71
+ sp = sin(phi);
72
+ cp = cos(phi);
73
+ w = 1.0 - f;
74
+ w = w * w;
75
+ d = cp*cp + w*sp*sp;
76
+ if ( d <= 0.0 ) return -1;
77
+ ac = a / sqrt(d);
78
+ as = w * ac;
79
+
80
+ /* Geocentric vector. */
81
+ r = (ac + height) * cp;
82
+ xyz[0] = r * cos(elong);
83
+ xyz[1] = r * sin(elong);
84
+ xyz[2] = (as + height) * sp;
85
+
86
+ /* Success. */
87
+ return 0;
88
+
89
+ /*----------------------------------------------------------------------
90
+ **
91
+ ** Celes is a wrapper of the SOFA Library for Ruby.
92
+ **
93
+ ** This file is redistributed and relicensed in accordance with
94
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
95
+ **
96
+ ** The original library is available from IAU Standards of
97
+ ** Fundamental Astronomy (http://www.iausofa.org/).
98
+ **
99
+ **
100
+ **
101
+ **
102
+ **
103
+ ** Copyright (C) 2013, Naoki Arita
104
+ ** All rights reserved.
105
+ **
106
+ ** Redistribution and use in source and binary forms, with or without
107
+ ** modification, are permitted provided that the following conditions
108
+ ** are met:
109
+ **
110
+ ** 1 Redistributions of source code must retain the above copyright
111
+ ** notice, this list of conditions and the following disclaimer.
112
+ **
113
+ ** 2 Redistributions in binary form must reproduce the above copyright
114
+ ** notice, this list of conditions and the following disclaimer in
115
+ ** the documentation and/or other materials provided with the
116
+ ** distribution.
117
+ **
118
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
119
+ ** the International Astronomical Union nor the names of its
120
+ ** contributors may be used to endorse or promote products derived
121
+ ** from this software without specific prior written permission.
122
+ **
123
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
124
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
125
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
126
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
127
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
128
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
129
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
130
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
131
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
132
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
133
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
134
+ ** POSSIBILITY OF SUCH DAMAGE.
135
+ **
136
+ **--------------------------------------------------------------------*/
137
+
138
+ }