equationoftime 3.0.0 → 4.0.0

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 (251) hide show
  1. checksums.yaml +4 -4
  2. data/.buildpath +5 -0
  3. data/.project +17 -0
  4. data/.rvmrc +1 -0
  5. data/.settings/org.eclipse.ltk.core.refactoring.prefs +2 -0
  6. data/Makefile +238 -0
  7. data/Rakefile +40 -3
  8. data/analemma_data.yml +2925 -0
  9. data/equationoftime.gemspec +6 -3
  10. data/examples/analemma_data_generator.rb +12 -12
  11. data/examples/celes_parts/.RUBYARCHDIR.time +0 -0
  12. data/examples/celes_parts/.cproject +56 -0
  13. data/examples/celes_parts/.project +78 -0
  14. data/examples/celes_parts/a2af.c +120 -0
  15. data/examples/celes_parts/a2tf.c +116 -0
  16. data/examples/celes_parts/af2a.c +107 -0
  17. data/examples/celes_parts/anp.c +82 -0
  18. data/examples/celes_parts/anpm.c +82 -0
  19. data/examples/celes_parts/bi00.c +116 -0
  20. data/examples/celes_parts/bp00.c +173 -0
  21. data/examples/celes_parts/bp06.c +136 -0
  22. data/examples/celes_parts/bpn2xy.c +100 -0
  23. data/examples/celes_parts/c2i00a.c +139 -0
  24. data/examples/celes_parts/c2i00b.c +139 -0
  25. data/examples/celes_parts/c2i06a.c +136 -0
  26. data/examples/celes_parts/c2ibpn.c +142 -0
  27. data/examples/celes_parts/c2ixy.c +131 -0
  28. data/examples/celes_parts/c2ixys.c +123 -0
  29. data/examples/celes_parts/c2s.c +96 -0
  30. data/examples/celes_parts/c2t00a.c +154 -0
  31. data/examples/celes_parts/c2t00b.c +150 -0
  32. data/examples/celes_parts/c2t06a.c +152 -0
  33. data/examples/celes_parts/c2tcio.c +122 -0
  34. data/examples/celes_parts/c2teqx.c +122 -0
  35. data/examples/celes_parts/c2tpe.c +167 -0
  36. data/examples/celes_parts/c2txy.c +159 -0
  37. data/examples/celes_parts/cal2jd.c +139 -0
  38. data/examples/celes_parts/celes_core.c +2522 -0
  39. data/examples/celes_parts/cp.c +80 -0
  40. data/examples/celes_parts/cpv.c +82 -0
  41. data/examples/celes_parts/cr.c +83 -0
  42. data/examples/celes_parts/d2dtf.c +206 -0
  43. data/examples/celes_parts/d2tf.c +160 -0
  44. data/examples/celes_parts/dat.c +289 -0
  45. data/examples/celes_parts/depend +25 -0
  46. data/examples/celes_parts/dtdb.c +1213 -0
  47. data/examples/celes_parts/dtf2d.c +196 -0
  48. data/examples/celes_parts/ee00.c +128 -0
  49. data/examples/celes_parts/ee00a.c +135 -0
  50. data/examples/celes_parts/ee00b.c +141 -0
  51. data/examples/celes_parts/ee06a.c +122 -0
  52. data/examples/celes_parts/eect00.c +282 -0
  53. data/examples/celes_parts/eform.c +147 -0
  54. data/examples/celes_parts/eo06a.c +131 -0
  55. data/examples/celes_parts/eors.c +108 -0
  56. data/examples/celes_parts/epb.c +96 -0
  57. data/examples/celes_parts/epb2jd.c +91 -0
  58. data/examples/celes_parts/epj.c +93 -0
  59. data/examples/celes_parts/epj2jd.c +91 -0
  60. data/examples/celes_parts/epv00.c +2589 -0
  61. data/examples/celes_parts/eqeq94.c +131 -0
  62. data/examples/celes_parts/era00.c +136 -0
  63. data/examples/celes_parts/extconf.rb +4 -0
  64. data/examples/celes_parts/fad03.c +103 -0
  65. data/examples/celes_parts/fae03.c +102 -0
  66. data/examples/celes_parts/faf03.c +106 -0
  67. data/examples/celes_parts/faju03.c +102 -0
  68. data/examples/celes_parts/fal03.c +103 -0
  69. data/examples/celes_parts/falp03.c +103 -0
  70. data/examples/celes_parts/fama03.c +102 -0
  71. data/examples/celes_parts/fame03.c +102 -0
  72. data/examples/celes_parts/fane03.c +99 -0
  73. data/examples/celes_parts/faom03.c +104 -0
  74. data/examples/celes_parts/fapa03.c +103 -0
  75. data/examples/celes_parts/fasa03.c +102 -0
  76. data/examples/celes_parts/faur03.c +99 -0
  77. data/examples/celes_parts/fave03.c +102 -0
  78. data/examples/celes_parts/fk52h.c +143 -0
  79. data/examples/celes_parts/fk5hip.c +126 -0
  80. data/examples/celes_parts/fk5hz.c +160 -0
  81. data/examples/celes_parts/fw2m.c +134 -0
  82. data/examples/celes_parts/fw2xy.c +120 -0
  83. data/examples/celes_parts/gc2gd.c +134 -0
  84. data/examples/celes_parts/gc2gde.c +200 -0
  85. data/examples/celes_parts/gd2gc.c +134 -0
  86. data/examples/celes_parts/gd2gce.c +138 -0
  87. data/examples/celes_parts/gmst00.c +145 -0
  88. data/examples/celes_parts/gmst06.c +136 -0
  89. data/examples/celes_parts/gmst82.c +151 -0
  90. data/examples/celes_parts/gst00a.c +138 -0
  91. data/examples/celes_parts/gst00b.c +146 -0
  92. data/examples/celes_parts/gst06.c +140 -0
  93. data/examples/celes_parts/gst06a.c +131 -0
  94. data/examples/celes_parts/gst94.c +131 -0
  95. data/examples/celes_parts/h2fk5.c +148 -0
  96. data/examples/celes_parts/hfk5z.c +175 -0
  97. data/examples/celes_parts/ir.c +83 -0
  98. data/examples/celes_parts/jd2cal.c +155 -0
  99. data/examples/celes_parts/jdcalf.c +161 -0
  100. data/examples/celes_parts/num00a.c +121 -0
  101. data/examples/celes_parts/num00b.c +121 -0
  102. data/examples/celes_parts/num06a.c +125 -0
  103. data/examples/celes_parts/numat.c +109 -0
  104. data/examples/celes_parts/nut00a.c +2047 -0
  105. data/examples/celes_parts/nut00b.c +372 -0
  106. data/examples/celes_parts/nut06a.c +153 -0
  107. data/examples/celes_parts/nut80.c +325 -0
  108. data/examples/celes_parts/nutm80.c +117 -0
  109. data/examples/celes_parts/obl06.c +118 -0
  110. data/examples/celes_parts/obl80.c +118 -0
  111. data/examples/celes_parts/p06e.c +321 -0
  112. data/examples/celes_parts/p2pv.c +83 -0
  113. data/examples/celes_parts/p2s.c +91 -0
  114. data/examples/celes_parts/pap.c +139 -0
  115. data/examples/celes_parts/pas.c +96 -0
  116. data/examples/celes_parts/pb06.c +144 -0
  117. data/examples/celes_parts/pdp.c +84 -0
  118. data/examples/celes_parts/pfw06.c +165 -0
  119. data/examples/celes_parts/plan94.c +514 -0
  120. data/examples/celes_parts/pm.c +83 -0
  121. data/examples/celes_parts/pmat00.c +118 -0
  122. data/examples/celes_parts/pmat06.c +122 -0
  123. data/examples/celes_parts/pmat76.c +141 -0
  124. data/examples/celes_parts/pmp.c +85 -0
  125. data/examples/celes_parts/pn.c +109 -0
  126. data/examples/celes_parts/pn00.c +177 -0
  127. data/examples/celes_parts/pn00a.c +162 -0
  128. data/examples/celes_parts/pn00b.c +162 -0
  129. data/examples/celes_parts/pn06.c +187 -0
  130. data/examples/celes_parts/pn06a.c +152 -0
  131. data/examples/celes_parts/pnm00a.c +121 -0
  132. data/examples/celes_parts/pnm00b.c +121 -0
  133. data/examples/celes_parts/pnm06a.c +124 -0
  134. data/examples/celes_parts/pnm80.c +126 -0
  135. data/examples/celes_parts/pom00.c +115 -0
  136. data/examples/celes_parts/ppp.c +85 -0
  137. data/examples/celes_parts/ppsp.c +94 -0
  138. data/examples/celes_parts/pr00.c +142 -0
  139. data/examples/celes_parts/prec76.c +148 -0
  140. data/examples/celes_parts/pv2p.c +81 -0
  141. data/examples/celes_parts/pv2s.c +144 -0
  142. data/examples/celes_parts/pvdpv.c +102 -0
  143. data/examples/celes_parts/pvm.c +86 -0
  144. data/examples/celes_parts/pvmpv.c +87 -0
  145. data/examples/celes_parts/pvppv.c +87 -0
  146. data/examples/celes_parts/pvstar.c +207 -0
  147. data/examples/celes_parts/pvu.c +93 -0
  148. data/examples/celes_parts/pvup.c +88 -0
  149. data/examples/celes_parts/pvxpv.c +107 -0
  150. data/examples/celes_parts/pxp.c +94 -0
  151. data/examples/celes_parts/rm2v.c +111 -0
  152. data/examples/celes_parts/rv2m.c +118 -0
  153. data/examples/celes_parts/rx.c +110 -0
  154. data/examples/celes_parts/rxp.c +99 -0
  155. data/examples/celes_parts/rxpv.c +86 -0
  156. data/examples/celes_parts/rxr.c +99 -0
  157. data/examples/celes_parts/ry.c +110 -0
  158. data/examples/celes_parts/rz.c +110 -0
  159. data/examples/celes_parts/s00.c +371 -0
  160. data/examples/celes_parts/s00a.c +143 -0
  161. data/examples/celes_parts/s00b.c +143 -0
  162. data/examples/celes_parts/s06.c +368 -0
  163. data/examples/celes_parts/s06a.c +145 -0
  164. data/examples/celes_parts/s2c.c +85 -0
  165. data/examples/celes_parts/s2p.c +88 -0
  166. data/examples/celes_parts/s2pv.c +103 -0
  167. data/examples/celes_parts/s2xpv.c +87 -0
  168. data/examples/celes_parts/sepp.c +105 -0
  169. data/examples/celes_parts/seps.c +93 -0
  170. data/examples/celes_parts/sofa.h +379 -0
  171. data/examples/celes_parts/sofam.h +155 -0
  172. data/examples/celes_parts/sp00.c +118 -0
  173. data/examples/celes_parts/starpm.c +205 -0
  174. data/examples/celes_parts/starpv.c +264 -0
  175. data/examples/celes_parts/sxp.c +84 -0
  176. data/examples/celes_parts/sxpv.c +85 -0
  177. data/examples/celes_parts/taitt.c +110 -0
  178. data/examples/celes_parts/taiut1.c +112 -0
  179. data/examples/celes_parts/taiutc.c +182 -0
  180. data/examples/celes_parts/tcbtdb.c +132 -0
  181. data/examples/celes_parts/tcgtt.c +109 -0
  182. data/examples/celes_parts/tdbtcb.c +137 -0
  183. data/examples/celes_parts/tdbtt.c +122 -0
  184. data/examples/celes_parts/test_celes.rb +48 -0
  185. data/examples/celes_parts/tf2a.c +107 -0
  186. data/examples/celes_parts/tf2d.c +107 -0
  187. data/examples/celes_parts/tr.c +93 -0
  188. data/examples/celes_parts/trxp.c +93 -0
  189. data/examples/celes_parts/trxpv.c +93 -0
  190. data/examples/celes_parts/tttai.c +110 -0
  191. data/examples/celes_parts/tttcg.c +112 -0
  192. data/examples/celes_parts/tttdb.c +121 -0
  193. data/examples/celes_parts/ttut1.c +110 -0
  194. data/examples/celes_parts/ut1tai.c +111 -0
  195. data/examples/celes_parts/ut1tt.c +110 -0
  196. data/examples/celes_parts/ut1utc.c +193 -0
  197. data/examples/celes_parts/utctai.c +163 -0
  198. data/examples/celes_parts/utcut1.c +151 -0
  199. data/examples/celes_parts/xy06.c +2758 -0
  200. data/examples/celes_parts/xys00a.c +133 -0
  201. data/examples/celes_parts/xys00b.c +133 -0
  202. data/examples/celes_parts/xys06a.c +133 -0
  203. data/examples/celes_parts/zp.c +77 -0
  204. data/examples/celes_parts/zpv.c +79 -0
  205. data/examples/celes_parts/zr.c +83 -0
  206. data/examples/check_date_type.rb +2 -4
  207. data/examples/compare_geoc_long_ra.rb +19 -11
  208. data/examples/data_table_for_astro_dog.rb +40 -0
  209. data/examples/earth_rotation.rb +28 -3
  210. data/examples/eot.c +15 -0
  211. data/examples/eot.h +2 -0
  212. data/examples/eot_methods_list.rb +30 -3
  213. data/examples/eot_suntimes.rb +99 -95
  214. data/examples/extconf.rb +2 -0
  215. data/examples/{read_nutation_data.rb → gmst_gast_non_sofa.rb} +103 -98
  216. data/examples/nutation_table5_3a.yaml +1658 -1658
  217. data/examples/rbeot.c +24 -0
  218. data/examples/test_eot.rb +17 -0
  219. data/examples/test_poly_eval.rb +6 -17
  220. data/examples/time_scales.rb +4 -7
  221. data/examples/times_year.rb +50 -0
  222. data/examples/usage_example.rb +15 -5
  223. data/examples/use_angles.rb +151 -87
  224. data/lib/eot/angles.rb +130 -177
  225. data/lib/eot/constants.rb +41 -44
  226. data/lib/eot/displays.rb +40 -37
  227. data/lib/eot/geo_lat_lng_smt.rb +7 -6
  228. data/lib/eot/init.rb +62 -39
  229. data/lib/eot/nutation.rb +53 -45
  230. data/lib/eot/times.rb +32 -41
  231. data/lib/eot/utilities.rb +11 -90
  232. data/lib/eot/version.rb +3 -2
  233. data/rise_set_data.yml +1461 -0
  234. data/run_tests_eclipse.rb +1 -0
  235. data/tests/minitest/aliased_angles_spec.rb +119 -165
  236. data/tests/minitest/aliased_displays_spec.rb +41 -39
  237. data/tests/minitest/aliased_utilities_spec.rb +11 -22
  238. data/tests/minitest/angles_spec.rb +134 -181
  239. data/tests/minitest/constants_spec.rb +4 -10
  240. data/tests/minitest/delta_epsilon_spec.rb +13 -16
  241. data/tests/minitest/displays_spec.rb +39 -37
  242. data/tests/minitest/geo_spec.rb +15 -11
  243. data/tests/minitest/init_spec.rb +30 -16
  244. data/tests/minitest/nutation_spec.rb +19 -13
  245. data/tests/minitest/times_spec.rb +77 -75
  246. data/tests/minitest/utilities_spec.rb +10 -94
  247. data/wiki.md +7 -9
  248. metadata +218 -26
  249. data/examples/data_table.rb +0 -26
  250. data/lib/eot/nutation_table5_3a.yaml +0 -9532
  251. data/tests/minitest/aliased_times_spec.rb +0 -36
@@ -0,0 +1,79 @@
1
+ #include "sofam.h"
2
+
3
+ void iauZpv(double pv[2][3])
4
+ /*
5
+ ** - - - - - - -
6
+ ** i a u Z p v
7
+ ** - - - - - - -
8
+ **
9
+ ** Zero a pv-vector.
10
+ **
11
+ ** Status: vector/matrix support function.
12
+ **
13
+ ** Returned:
14
+ ** pv double[2][3] pv-vector
15
+ **
16
+ ** Called:
17
+ ** iauZp zero p-vector
18
+ **
19
+ ** This revision: 2008 May 11
20
+ **
21
+ ** Original version 2012-03-01
22
+ **
23
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
24
+ */
25
+ {
26
+ iauZp(pv[0]);
27
+ iauZp(pv[1]);
28
+
29
+ return;
30
+
31
+ /*----------------------------------------------------------------------
32
+ **
33
+ ** Celes is a wrapper of the SOFA Library for Ruby.
34
+ **
35
+ ** This file is redistributed and relicensed in accordance with
36
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
37
+ **
38
+ ** The original library is available from IAU Standards of
39
+ ** Fundamental Astronomy (http://www.iausofa.org/).
40
+ **
41
+ **
42
+ **
43
+ **
44
+ **
45
+ ** Copyright (C) 2013, Naoki Arita
46
+ ** All rights reserved.
47
+ **
48
+ ** Redistribution and use in source and binary forms, with or without
49
+ ** modification, are permitted provided that the following conditions
50
+ ** are met:
51
+ **
52
+ ** 1 Redistributions of source code must retain the above copyright
53
+ ** notice, this list of conditions and the following disclaimer.
54
+ **
55
+ ** 2 Redistributions in binary form must reproduce the above copyright
56
+ ** notice, this list of conditions and the following disclaimer in
57
+ ** the documentation and/or other materials provided with the
58
+ ** distribution.
59
+ **
60
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
61
+ ** the International Astronomical Union nor the names of its
62
+ ** contributors may be used to endorse or promote products derived
63
+ ** from this software without specific prior written permission.
64
+ **
65
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
66
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
67
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
68
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
69
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
70
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
71
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
72
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
73
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
74
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
75
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
76
+ ** POSSIBILITY OF SUCH DAMAGE.
77
+ **
78
+ **--------------------------------------------------------------------*/
79
+ }
@@ -0,0 +1,83 @@
1
+ #include "sofam.h"
2
+
3
+ void iauZr(double r[3][3])
4
+ /*
5
+ ** - - - - - -
6
+ ** i a u Z r
7
+ ** - - - - - -
8
+ **
9
+ ** Initialize an r-matrix to the null matrix.
10
+ **
11
+ ** Status: vector/matrix support function.
12
+ **
13
+ ** Returned:
14
+ ** r double[3][3] r-matrix
15
+ **
16
+ ** This revision: 2012 April 3
17
+ **
18
+ ** Original version 2012-03-01
19
+ **
20
+ ** Copyright (C) 2013 Naoki Arita. See notes at end.
21
+ */
22
+ {
23
+ r[0][0] = 0.0;
24
+ r[0][1] = 0.0;
25
+ r[0][2] = 0.0;
26
+ r[1][0] = 0.0;
27
+ r[1][1] = 0.0;
28
+ r[1][2] = 0.0;
29
+ r[2][0] = 0.0;
30
+ r[2][1] = 0.0;
31
+ r[2][2] = 0.0;
32
+
33
+ return;
34
+
35
+ /*----------------------------------------------------------------------
36
+ **
37
+ ** Celes is a wrapper of the SOFA Library for Ruby.
38
+ **
39
+ ** This file is redistributed and relicensed in accordance with
40
+ ** the SOFA Software License (http://www.iausofa.org/tandc.html).
41
+ **
42
+ ** The original library is available from IAU Standards of
43
+ ** Fundamental Astronomy (http://www.iausofa.org/).
44
+ **
45
+ **
46
+ **
47
+ **
48
+ **
49
+ ** Copyright (C) 2013, Naoki Arita
50
+ ** All rights reserved.
51
+ **
52
+ ** Redistribution and use in source and binary forms, with or without
53
+ ** modification, are permitted provided that the following conditions
54
+ ** are met:
55
+ **
56
+ ** 1 Redistributions of source code must retain the above copyright
57
+ ** notice, this list of conditions and the following disclaimer.
58
+ **
59
+ ** 2 Redistributions in binary form must reproduce the above copyright
60
+ ** notice, this list of conditions and the following disclaimer in
61
+ ** the documentation and/or other materials provided with the
62
+ ** distribution.
63
+ **
64
+ ** 3 Neither the name of the Standards Of Fundamental Astronomy Board,
65
+ ** the International Astronomical Union nor the names of its
66
+ ** contributors may be used to endorse or promote products derived
67
+ ** from this software without specific prior written permission.
68
+ **
69
+ ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
70
+ ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
71
+ ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
72
+ ** FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
73
+ ** COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
74
+ ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
75
+ ** BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
76
+ ** LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
77
+ ** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
78
+ ** LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
79
+ ** ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
80
+ ** POSSIBILITY OF SUCH DAMAGE.
81
+ **
82
+ **--------------------------------------------------------------------*/
83
+ }
@@ -11,11 +11,9 @@ output =<<EOO
11
11
 
12
12
  eot = Eot.new()
13
13
 
14
- eot.date = #{eot.date} = #{eot.date.class}
14
+ eot.ajd = #{eot.ajd}
15
15
 
16
- eot.ajd = eot.date.ajd.to_f = #{eot.ajd = eot.date.ajd.to_f}
17
-
18
- eot.eot = #{eot.eot()} # getting default today
16
+ eot.eot = #{eot.eot()} # this is radians for eot today.
19
17
 
20
18
  eot.date = #{eot.date = "2014-10-14"} = #{eot.date.class}
21
19
 
@@ -7,25 +7,33 @@ require 'eot'
7
7
 
8
8
  eot = Eot.new()
9
9
 
10
- start = "2013-3-20"
11
- finish = "2013-3-20"
10
+ start = "2014-6-21"
11
+ finish = "2014-6-21"
12
12
 
13
13
  start_date = Date.parse(start)
14
14
  finish_date = Date.parse(finish)
15
15
 
16
16
  puts "start julian date = #{start_date.jd} date = #{start}"
17
17
  puts "finish julian date = #{finish_date.jd} date = #{finish}"
18
+ puts
18
19
 
19
20
  ajd = start_date.ajd * 1.0
20
21
 
21
- for min in 0..59
22
- h = 10 / 24.0
23
- fd = h + min / 1440.0
24
- timejc = eot.time_julian_century(ajd + fd)
25
- ml = eot.geometric_mean_longitude(timejc)
26
- tl = eot.true_longitude(timejc)
27
- ra = eot.right_ascension(timejc)
28
- puts "time\t\t\tmean longitude\t\tright ascension"
29
- puts "10:#{min}\t\t\t#{ml}\t\t#{ra}\t\t#{}"
22
+ for psec in 630..631
23
+ h = 10 / 24.0
24
+ fd = h + 45 / 1440.0 + 31 / 86400.0 + 691 / 86400.0 / 1e3 + 244 / 86400.0 / 1e6 + 989 / 86400.0 / 1e9 + psec / 86400.0 / 1e12
25
+ eot.ajd = ajd + fd
26
+ ml = eot.geometric_mean_longitude()
27
+ tl = eot.true_longitude()
28
+ da = ml - tl
29
+ al = eot.apparent_longitude()
30
+ ra = eot.right_ascension()
31
+ db = al - ra
32
+ # puts "time\t\t\tmean longitude\t\t\ttrue_longitude\t\t\tdifference"
33
+ # puts "10:45:31.691_#{usec}\t\t\t#{ml}\t\t#{tl}\t\t#{da}"
34
+ # puts
35
+ puts "time\t\t\tapparent longitude\t\tright ascension\t\t\tdifference"
36
+ puts "10:45:31.691_244_989_#{psec}\t\t\t#{al}\t\t#{ra}\t\t#{db}"
37
+ puts
30
38
  end
31
39
  #~ end
@@ -0,0 +1,40 @@
1
+ # class that goes with equationoftime.herokuapp.com/analemma
2
+ class AnalemmaDataTable
3
+
4
+ attr_accessor :data, :finish, :start, :table, :html
5
+
6
+ def initialize
7
+ @start = Time.utc( 2014, "jan", 1, 12, 0, 0 ).to_s
8
+ @start_jd = Date.parse(@start).jd.to_s
9
+ @finish = Time.utc( 2014, "dec", 31, 12, 0, 0 ).to_s
10
+ @finish_jd = Date.parse(@finish).jd.to_s
11
+ @span = Date.parse( @finish ).jd - Date.parse( @start ).jd
12
+ @file_path = File.expand_path( File.dirname( __FILE__ ) + "/analemma_data.yml" )
13
+ @data = YAML::load( File.open( @file_path, 'r'), :safe => true ).freeze
14
+ @table = ""
15
+ @html = ""
16
+
17
+ (0..@span).each do |i|
18
+ p @data[i]
19
+ # @jd = @data[i].fetch ":jd"
20
+ # @date = @data[i].fetch ":date"
21
+ # @delta_1 = @data[i].fetch ":delta_1"
22
+ # @delta_2 = @data[i].fetch ":delta_2"
23
+ # @delta_t = @data[i].fetch ":delta_t"
24
+ # @declination = @data[i].fetch ":declination"
25
+ # @transit = @data[i].fetch ":transit"
26
+ end
27
+ end
28
+ end
29
+
30
+ if __FILE__ == $PROGRAM_NAME
31
+
32
+ lib = File.expand_path('../../lib', __FILE__)
33
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
34
+
35
+ require 'safe_yaml'
36
+ require 'eot'
37
+
38
+ adt = AnalemmaDataTable.new
39
+
40
+ end
@@ -2,12 +2,37 @@
2
2
 
3
3
  require 'bigdecimal'
4
4
 
5
- factor = 1 / (1 - 1 / 365.25)
6
- bd_factor = BigDecimal.new("#{1 / (1 - 1 / 365.25)}") * 1.0
5
+ factor = 1 / (1 - 1 / 366.0)
6
+ bd_factor = BigDecimal.new("#{1 / (1 - 1 / 366.0)}") * 1.0
7
7
  puts "360 degrees x #{factor} = #{360 * factor} degrees"
8
8
  puts "360 degrees x #{bd_factor} = #{360 * bd_factor} degrees"
9
9
 
10
10
  sidereal_minutes = 4 / factor
11
11
  bd_sidereal_minutes = 4 / bd_factor
12
12
  puts sidereal_minutes
13
- puts sidereal_minutes
13
+ puts sidereal_minutes
14
+
15
+ lib = File.expand_path('../../lib', __FILE__)
16
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
17
+ require 'eot'
18
+
19
+ eot = Eot.new()
20
+ # From angles.rb:<br>
21
+ # angle factor for daily sidereal time (experimental)
22
+ def factor eot
23
+ eot.ajd = Date.parse("2000-01-01").jd
24
+ tlaa = eot.tl_Aries()
25
+ eot.ajd = eot.ajd + 1
26
+ tlab = eot.tl_Aries()
27
+ dif = (tlab - tlaa) * Eot::R2D
28
+ f1 = dif / 360.0 + 1
29
+ 1 / f1
30
+ end
31
+
32
+ p factor(eot) * 4
33
+ p factor(eot) * 4 * 360.0
34
+ p factor(eot) * 4 * 360.0 / 60.0
35
+ p factor(eot) * 4 * 360.0 / 60.0 * 366
36
+ shd = factor(eot) * 4 * 360.0 / 60.0
37
+ sdnl = shd * 366 * 4
38
+ p sdnl / (4 * 365 + 1)
data/examples/eot.c ADDED
@@ -0,0 +1,15 @@
1
+ #include "eot.h"
2
+ double maSun(double t)
3
+ {
4
+ double a;
5
+
6
+
7
+ /* Mean anomaly of the Sun (IERS Conventions 2003). */
8
+ a = fmod( 1287104.793048 +
9
+ t * ( 129596581.0481 +
10
+ t * ( - 0.5532 +
11
+ t * ( 0.000136 +
12
+ t * ( - 0.00001149 ) ) ) ), 1296000.0 ) * 4.848136811095359935899141e-6;
13
+
14
+ return a;
15
+ }
data/examples/eot.h ADDED
@@ -0,0 +1,2 @@
1
+ #include "math.h"
2
+ double maSun(double t);
@@ -7,10 +7,37 @@ require 'eot'
7
7
  $DEBUG and set_trace_func proc { |event, file, line, id, binding, classname|
8
8
  printf "%8s %s:%-2d %10s %8s\n", event, file, line, id, classname
9
9
  }
10
+
11
+ date = DateTime.now.to_time.utc.to_datetime
12
+ puts date
13
+
10
14
  eot = Eot.new
11
- puts eot.public_methods(false).sort
12
- # puts eot.nil?
15
+ puts eot.nil?
16
+ puts eot.public_methods(false).count
17
+ list = eot.public_methods(false).sort
18
+ sym_list = []
19
+ list.each {|i|sym_list << i.to_sym}
20
+ #p sym_list
21
+ my_list =[:al_Sun, :angle_delta_oblique, :angle_delta_orbit, :angle_delta_psi, :angle_equation_of_time,
22
+ :apparent_longitude, :apparent_longitude_string, :center, :cosine_al_Sun, :cosine_apparent_longitude,
23
+ :cosine_tl_Sun, :cosine_to_Earth, :cosine_true_longitude, :cosine_true_obliquity, :dec_Sun,
24
+ :declination, :declination_string, :degrees_to_s, :delta_epsilon, :delta_equinox, :delta_oblique, :delta_orbit,
25
+ :delta_psi, :delta_t_ecliptic, :delta_t_elliptic, :display_equation_of_time, :display_time_string,
26
+ :eccentricity_Earth, :eccentricity_earth_orbit, :ecliptic_longitude, :eot, :eot_jd, :eq_of_equinox,
27
+ :equation_of_center, :geometric_mean_longitude, :gml_Sun, :ha_Sun, :horizon_angle,
28
+ :jd_to_date_string, :julian_period_day_fraction_to_time, :latitude, :latitude=, :local_noon_dt,
29
+ :ma_Sun, :mean_anomaly, :mean_anomaly_string, :mean_local_noon_dt, :mean_longitude_aries,
30
+ :mean_obliquity, :mean_obliquity_of_ecliptic, :ml_Aries, :mo_Earth, :mod_360, :now,
31
+ :obliquity_correction, :omega, :ra_Sun, :right_ascension, :right_ascension_string, :show_minutes,
32
+ :show_now, :sine_al_Sun, :sine_apparent_longitude, :sine_tl_Sun, :sine_to_Earth,
33
+ :sine_true_longitude, :string_al_Sun, :string_day_fraction_to_time, :string_dec_Sun,
34
+ :string_delta_oblique, :string_delta_orbit, :string_eot, :string_eqc, :string_jd_to_date,
35
+ :string_ma_Sun, :string_ra_Sun, :string_ta_Sun, :string_time, :string_tl_Sun, :string_to_Earth,
36
+ :sunrise_dt, :sunrise_jd, :sunset_dt, :sunset_jd, :ta_Sun, :time_delta_oblique, :time_delta_orbit,
37
+ :time_eot, :time_julian_centurey, :time_julian_century, :tl_Aries, :tl_Sun, :to_Earth,
38
+ :true_anomaly, :true_anomaly_string, :true_longitude, :true_longitude_aries,
39
+ :true_longitude_string, :true_obliquity, :true_obliquity_string, :truncate]
40
+ my_list.collect {|e| p e}
13
41
 
14
- date = DateTime.now.to_time.utc.to_datetime
15
42
  puts date
16
43
 
@@ -1,116 +1,117 @@
1
1
  #!/usr/bin/env ruby
2
- # eot_suntimes.rb
2
+ # eot_suntimes.rb leftover from building the parts in the gem so just left it here.
3
3
  #
4
4
  lib = File.expand_path('../../lib', __FILE__)
5
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
6
 
7
- def sunrise_jd(arg)
8
-
9
- arg.date.nil? ? result = "date parameter not set" : result = "date parameter OK"
10
-
11
- arg.longitude.nil? ? result = "longitude parameter not set" : result = "longitude parameter OK"
12
-
13
- arg.latitude.nil? ? result = "latitude parameter not set" : result = "latitude parameter OK"
14
-
15
- utc_noon_jd = arg.date.jd
16
-
17
- lng_jd = arg.longitude / 360.0
18
-
19
- mean_utc_noon_jd = utc_noon_jd - lng_jd
20
-
21
- tjc_mean_local_noon_array = arg.time_julian_century(mean_utc_noon_jd)
22
-
23
- eot = arg.equation_of_time(tjc_mean_local_noon_array)
24
-
25
- eot_jd = eot / 1440.0
26
-
27
- true_utc_noon_jd = mean_utc_noon_jd - eot_jd
28
-
29
- tjc_true_local_noon_array = arg.time_julian_century(true_utc_noon_jd)
30
-
31
- mean_anomaly = arg.ma_Sun(tjc_true_local_noon_array)
32
-
33
- lha = arg.ha_Sun(tjc_true_local_noon_array, mean_anomaly)
34
-
35
- lha_jd = lha / 360.0
36
-
37
- # rise_jd
38
- true_utc_noon_jd - lha_jd
39
-
40
- end
41
-
42
- def sunset_jd(arg)
43
-
44
- arg.date.nil? ? result = "date parameter not set" : result = "date parameter OK"
45
-
46
- arg.longitude.nil? ? result = "longitude parameter not set" : result = "longitude parameter OK"
47
-
48
- arg.latitude.nil? ? result = "latitude parameter not set" : result = "latitude parameter OK"
49
-
50
- utc_noon_jd = arg.date.jd
51
-
52
- lng_jd = arg.longitude / 360.0
53
-
54
- mean_utc_noon_jd = utc_noon_jd - lng_jd
55
-
56
- tjc_mean_local_noon = arg.time_julian_century(mean_utc_noon_jd)
57
-
58
- eot_jd = arg.equation_of_time(tjc_mean_local_noon) / 1440.0
59
-
60
- true_utc_noon_jd = mean_utc_noon_jd - eot_jd
61
-
62
- tjc_true_local_noon = arg.time_julian_century(true_utc_noon_jd)
63
-
64
- mean_anomaly = arg.ma_Sun(tjc_true_local_noon)
65
-
66
- lha_jd = arg.ha_Sun(tjc_true_local_noon, mean_anomaly) / 360.0
67
-
68
- # sunset jd
69
- true_utc_noon_jd + lha_jd
70
-
71
- end
7
+ #def sunrise_jd(arg)
8
+ #
9
+ # arg.date.nil? ? result = "date parameter not set" : result = "date parameter OK"
10
+ #
11
+ # arg.longitude.nil? ? result = "longitude parameter not set" : result = "longitude parameter OK"
12
+ #
13
+ # arg.latitude.nil? ? result = "latitude parameter not set" : result = "latitude parameter OK"
14
+ #
15
+ # utc_noon_jd = arg.date.jd
16
+ #
17
+ # lng_jd = arg.longitude / 360.0
18
+ #
19
+ # mean_utc_noon_jd = utc_noon_jd - lng_jd
20
+ #
21
+ # tjc_mean_local_noon_array = arg.time_julian_century(mean_utc_noon_jd)
22
+ #
23
+ # eot = arg.equation_of_time(tjc_mean_local_noon_array)
24
+ #
25
+ # eot_jd = eot / 1440.0
26
+ #
27
+ # true_utc_noon_jd = mean_utc_noon_jd - eot_jd
28
+ #
29
+ # tjc_true_local_noon_array = arg.time_julian_century(true_utc_noon_jd)
30
+ #
31
+ # mean_anomaly = arg.ma_Sun(tjc_true_local_noon_array)
32
+ #
33
+ # lha = arg.ha_Sun(tjc_true_local_noon_array, mean_anomaly)
34
+ #
35
+ # lha_jd = lha / 360.0
36
+ #
37
+ # # rise_jd
38
+ # true_utc_noon_jd - lha_jd
39
+ #
40
+ #end
41
+ #
42
+ #def sunset_jd(arg)
43
+ #
44
+ # arg.date.nil? ? result = "date parameter not set" : result = "date parameter OK"
45
+ #
46
+ # arg.longitude.nil? ? result = "longitude parameter not set" : result = "longitude parameter OK"
47
+ #
48
+ # arg.latitude.nil? ? result = "latitude parameter not set" : result = "latitude parameter OK"
49
+ #
50
+ # utc_noon_jd = arg.date.jd
51
+ #
52
+ # lng_jd = arg.longitude / 360.0
53
+ #
54
+ # mean_utc_noon_jd = utc_noon_jd - lng_jd
55
+ #
56
+ # tjc_mean_local_noon = arg.time_julian_century(mean_utc_noon_jd)
57
+ #
58
+ # eot_jd = arg.equation_of_time(tjc_mean_local_noon) / 1440.0
59
+ #
60
+ # true_utc_noon_jd = mean_utc_noon_jd - eot_jd
61
+ #
62
+ # tjc_true_local_noon = arg.time_julian_century(true_utc_noon_jd)
63
+ #
64
+ # mean_anomaly = arg.ma_Sun(tjc_true_local_noon)
65
+ #
66
+ # lha_jd = arg.ha_Sun(tjc_true_local_noon, mean_anomaly) / 360.0
67
+ #
68
+ # # sunset jd
69
+ # true_utc_noon_jd + lha_jd
70
+ #
71
+ #end
72
72
 
73
73
 
74
74
  require 'eot'
75
75
 
76
76
  addr = "8000 South Michigan Ave., Chicago, IL"
77
- loc = GeoLatLng.new
78
- loc.addr = addr
79
- loc.get_coordinates_from_address
80
- puts loc.lat, loc.lng
81
-
82
- eot = Eot.new
83
- eot.longitude = loc.lng
84
- eot.ajd = Date.today.jd
85
- eot.latitude = loc.lat
86
-
87
- puts "Using this files methods"
88
- puts sunrise_jd()
89
-
90
- # Note: DateTime.jd() renders time from midnight not noon
91
- # so 12 hours need to be added for correct time.
92
- puts DateTime.jd(sunrise_jd() + 0.5)
93
- puts DateTime.jd(sunrise_jd() + 0.5).to_time.utc
94
-
95
- puts
96
- puts sunset_jd()
97
-
98
- puts DateTime.jd(sunset_jd() + 0.5)
99
- puts DateTime.jd(sunset_jd() + 0.5).to_time.utc
77
+ #loc = GeoLatLng.new
78
+ #loc.addr = addr
79
+ #loc.get_coordinates_from_address
80
+ #puts loc.lat, loc.lng
81
+
82
+ eot = Eot.new(addr)
83
+ #eot.longitude = loc.lng
84
+ #eot.ajd = Date.today.jd
85
+ #eot.latitude = loc.lat
86
+
87
+ #puts "Using this files methods"
88
+ #puts sunrise_jd(Date.today)
89
+
90
+ ## Note: DateTime.jd() renders time from midnight not noon
91
+ ## so 12 hours need to be added for correct time.
92
+ #puts DateTime.jd(sunrise_jd() + 0.5)
93
+ #puts DateTime.jd(sunrise_jd() + 0.5).to_time.utc
94
+ #
95
+ #puts
96
+ #puts sunset_jd()
97
+ #
98
+ #puts DateTime.jd(sunset_jd() + 0.5)
99
+ #puts DateTime.jd(sunset_jd() + 0.5).to_time.utc
100
100
 
101
101
  OUT =<<EOS
102
102
 
103
103
  Using eot gem methods
104
- #{eot.date}
105
- #{eot.date.jd}
104
+
105
+ #{eot.latitude}
106
+ #{eot.longitude}
106
107
 
107
108
  #{eot.sunrise_jd()}
108
- #{DateTime.jd(eot.sunrise_jd() + 0.5)}
109
- #{DateTime.jd(eot.sunrise_jd() + 0.5).to_time}
109
+ #{eot.ajd_to_datetime(eot.sunrise_jd())}
110
+ #{eot.ajd_to_datetime(eot.sunrise_jd()).to_time}
110
111
 
111
112
  #{eot.sunset_jd()}
112
- #{DateTime.jd(eot.sunset_jd() + 0.5)}
113
- #{DateTime.jd(eot.sunset_jd() + 0.5).to_time}
113
+ #{eot.ajd_to_datetime(eot.sunset_jd())}
114
+ #{eot.ajd_to_datetime(eot.sunset_jd()).to_time}
114
115
 
115
116
  #{Date.jd(Date.today.jd)}
116
117
  #{Date.today.jd}
@@ -135,6 +136,9 @@ Using eot gem methods
135
136
 
136
137
  #{DateTime.jd(Time.now.to_datetime.jd).to_time}
137
138
  #{DateTime.jd(Time.now.utc.to_datetime.jd).to_time}
139
+
140
+ #{DateTime.jd(Time.now.to_datetime.jd + 0.5).to_time}
141
+ #{DateTime.jd(Time.now.utc.to_datetime.jd + 0.5).to_time}
138
142
  EOS
139
143
 
140
144
  puts OUT