astronoby 0.9.0 → 0.10.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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/CHANGELOG.md +101 -0
  4. data/README.md +6 -1
  5. data/UPGRADING.md +84 -0
  6. data/docs/README.md +80 -15
  7. data/docs/angles.md +1 -0
  8. data/docs/configuration.md +20 -17
  9. data/docs/coordinates.md +72 -12
  10. data/docs/deep_sky_bodies.md +1 -1
  11. data/docs/ephem.md +5 -2
  12. data/docs/equinoxes_solstices_times.md +4 -3
  13. data/docs/glossary.md +97 -1
  14. data/docs/iers.md +40 -0
  15. data/docs/instant.md +20 -15
  16. data/docs/lunar_eclipses.md +93 -0
  17. data/docs/lunar_observation.md +87 -0
  18. data/docs/moon_phases.md +4 -1
  19. data/docs/observer.md +20 -6
  20. data/docs/planetary_phenomena.md +78 -0
  21. data/docs/reference_frames.md +192 -34
  22. data/docs/rise_transit_set_times.md +6 -4
  23. data/docs/solar_system_bodies.md +26 -4
  24. data/docs/twilight_times.md +25 -21
  25. data/lib/astronoby/angle.rb +63 -2
  26. data/lib/astronoby/angles/dms.rb +18 -1
  27. data/lib/astronoby/angles/hms.rb +14 -1
  28. data/lib/astronoby/angular_velocity.rb +21 -0
  29. data/lib/astronoby/bodies/deep_sky_object.rb +6 -1
  30. data/lib/astronoby/bodies/deep_sky_object_position.rb +32 -17
  31. data/lib/astronoby/bodies/earth.rb +7 -44
  32. data/lib/astronoby/bodies/jupiter.rb +10 -0
  33. data/lib/astronoby/bodies/mars.rb +10 -0
  34. data/lib/astronoby/bodies/mercury.rb +10 -0
  35. data/lib/astronoby/bodies/moon.rb +158 -32
  36. data/lib/astronoby/bodies/neptune.rb +10 -0
  37. data/lib/astronoby/bodies/saturn.rb +10 -0
  38. data/lib/astronoby/bodies/solar_system_body.rb +240 -61
  39. data/lib/astronoby/bodies/sun.rb +79 -4
  40. data/lib/astronoby/bodies/uranus.rb +10 -0
  41. data/lib/astronoby/bodies/venus.rb +10 -0
  42. data/lib/astronoby/body.rb +6 -0
  43. data/lib/astronoby/center.rb +84 -0
  44. data/lib/astronoby/constellation.rb +9 -1
  45. data/lib/astronoby/coordinates/ecliptic.rb +10 -1
  46. data/lib/astronoby/coordinates/equatorial.rb +64 -8
  47. data/lib/astronoby/coordinates/geodetic.rb +102 -0
  48. data/lib/astronoby/coordinates/horizontal.rb +13 -1
  49. data/lib/astronoby/distance.rb +35 -0
  50. data/lib/astronoby/duration.rb +116 -0
  51. data/lib/astronoby/earth_rotation.rb +70 -0
  52. data/lib/astronoby/equinox_solstice.rb +31 -8
  53. data/lib/astronoby/errors.rb +11 -0
  54. data/lib/astronoby/events/conjunction.rb +51 -0
  55. data/lib/astronoby/events/conjunction_opposition_calculator.rb +84 -0
  56. data/lib/astronoby/events/eclipse_phase.rb +27 -0
  57. data/lib/astronoby/events/extremum_calculator.rb +23 -176
  58. data/lib/astronoby/events/greatest_elongation.rb +58 -0
  59. data/lib/astronoby/events/greatest_elongation_calculator.rb +56 -0
  60. data/lib/astronoby/events/lunar_eclipse.rb +99 -0
  61. data/lib/astronoby/events/lunar_eclipse_calculator.rb +285 -0
  62. data/lib/astronoby/events/opposition.rb +19 -0
  63. data/lib/astronoby/events/rise_transit_set_event.rb +12 -1
  64. data/lib/astronoby/events/rise_transit_set_events.rb +12 -1
  65. data/lib/astronoby/events/twilight_event.rb +24 -6
  66. data/lib/astronoby/events/twilight_events.rb +26 -6
  67. data/lib/astronoby/extremum_finder.rb +148 -0
  68. data/lib/astronoby/instant.rb +10 -7
  69. data/lib/astronoby/libration.rb +25 -0
  70. data/lib/astronoby/mean_obliquity.rb +8 -0
  71. data/lib/astronoby/moon_orientation_ephemeris.rb +69 -0
  72. data/lib/astronoby/moon_physical_ephemeris.rb +263 -0
  73. data/lib/astronoby/nutation.rb +10 -20
  74. data/lib/astronoby/observer.rb +67 -49
  75. data/lib/astronoby/orientation.rb +107 -0
  76. data/lib/astronoby/position.rb +16 -0
  77. data/lib/astronoby/precession.rb +61 -60
  78. data/lib/astronoby/reference_frame.rb +73 -7
  79. data/lib/astronoby/reference_frames/apparent.rb +26 -7
  80. data/lib/astronoby/reference_frames/astrometric.rb +14 -1
  81. data/lib/astronoby/reference_frames/geometric.rb +7 -1
  82. data/lib/astronoby/reference_frames/mean_of_date.rb +13 -1
  83. data/lib/astronoby/reference_frames/teme.rb +153 -0
  84. data/lib/astronoby/reference_frames/topocentric.rb +30 -4
  85. data/lib/astronoby/refraction.rb +26 -5
  86. data/lib/astronoby/root_finder.rb +83 -0
  87. data/lib/astronoby/rotation.rb +49 -0
  88. data/lib/astronoby/time/greenwich_apparent_sidereal_time.rb +9 -0
  89. data/lib/astronoby/time/greenwich_mean_sidereal_time.rb +42 -5
  90. data/lib/astronoby/time/greenwich_sidereal_time.rb +21 -0
  91. data/lib/astronoby/time/local_apparent_sidereal_time.rb +21 -0
  92. data/lib/astronoby/time/local_mean_sidereal_time.rb +21 -0
  93. data/lib/astronoby/time/local_sidereal_time.rb +24 -0
  94. data/lib/astronoby/time/sidereal_time.rb +23 -1
  95. data/lib/astronoby/true_obliquity.rb +4 -0
  96. data/lib/astronoby/util/maths.rb +8 -0
  97. data/lib/astronoby/util/time.rb +10 -485
  98. data/lib/astronoby/vector.rb +10 -0
  99. data/lib/astronoby/velocity.rb +39 -0
  100. data/lib/astronoby/version.rb +1 -1
  101. data/lib/astronoby.rb +22 -0
  102. metadata +45 -5
@@ -1,470 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "iers"
4
+
3
5
  module Astronoby
4
6
  module Util
5
7
  module Time
6
- OLD_LEAP_SECONDS = {
7
- 2378496.5 => 13.188148343557259, # 1800-01-01T00:00:00+00:00
8
- 2378677.5 => 12.977779959648615,
9
- 2378861.5 => 12.789307379498496,
10
- 2379042.5 => 12.627219619724201,
11
- 2379226.5 => 12.484534330869792,
12
- 2379407.5 => 12.364396579316235,
13
- 2379591.5 => 12.261337343137711,
14
- 2379772.5 => 12.1773053980869,
15
- 2379956.5 => 12.108106397237862,
16
- 2380138.5 => 12.054387758878875,
17
- 2380322.5 => 12.013603253144538,
18
- 2380503.5 => 11.98543684683682,
19
- 2380687.5 => 11.96762962192588,
20
- 2380868.5 => 11.959480197547236,
21
- 2381052.5 => 11.959422685911704,
22
- 2381233.5 => 11.966206580204016,
23
- 2381417.5 => 11.978793920316093,
24
- 2381599.5 => 11.99566047854023,
25
- 2381783.5 => 12.015950798828271,
26
- 2381964.5 => 12.037916332170425,
27
- 2382148.5 => 12.061120228798245,
28
- 2382329.5 => 12.083698914131674,
29
- 2382513.5 => 12.10530703765835,
30
- 2382694.5 => 12.12421078250918,
31
- 2382878.5 => 12.140030777663924,
32
- 2383060.5 => 12.151364887780801,
33
- 2383244.5 => 12.157556479887717,
34
- 2383425.5 => 12.15765329658825,
35
- 2383609.5 => 12.150876665651595,
36
- 2383790.5 => 12.136746181382478,
37
- 2383974.5 => 12.114144526847667,
38
- 2384155.5 => 12.083243093009514,
39
- 2384339.5 => 12.042512500593148,
40
- 2384521.5 => 11.992558943176846,
41
- 2384705.5 => 11.931929977163236,
42
- 2384886.5 => 11.862085932760237,
43
- 2385070.5 => 11.78051543343463,
44
- 2385251.5 => 11.689763871143441,
45
- 2385435.5 => 11.586784825234645,
46
- 2385616.5 => 11.474975813831406,
47
- 2385800.5 => 11.350748372411545,
48
- 2385982.5 => 11.21758410586699,
49
- 2386166.5 => 11.072826269341022,
50
- 2386347.5 => 10.920825074952518,
51
- 2386531.5 => 10.756952695481232,
52
- 2386712.5 => 10.587020134840714,
53
- 2386896.5 => 10.405935512304495,
54
- 2387077.5 => 10.22019193469896,
55
- 2387261.5 => 10.024289426956784,
56
- 2387443.5 => 9.824194633200023,
57
- 2387627.5 => 9.616270032883222,
58
- 2387808.5 => 9.406995099559936,
59
- 2387992.5 => 9.190269937098492,
60
- 2388173.5 => 8.974012950570796,
61
- 2388357.5 => 8.751953043760295,
62
- 2388538.5 => 8.532231137086455,
63
- 2388722.5 => 8.308500055015429,
64
- 2388904.5 => 8.087772834055613,
65
- 2389088.5 => 7.866155700010495,
66
- 2389269.5 => 7.650592317289465,
67
- 2389453.5 => 7.434884049415814,
68
- 2389634.5 => 7.226980347727022,
69
- 2389818.5 => 7.020908291692649,
70
- 2389999.5 => 6.824264827564548,
71
- 2390183.5 => 6.631400447266969,
72
- 2390365.5 => 6.448439782438527,
73
- 2390549.5 => 6.272163832553815,
74
- 2390730.5 => 6.1080329005421845,
75
- 2390914.5 => 5.951314816355762,
76
- 2391095.5 => 5.807762833132756,
77
- 2391279.5 => 5.67321983816305,
78
- 2391460.5 => 5.552603443019962,
79
- 2391644.5 => 5.442394451603377,
80
- 2391826.5 => 5.346096742151303,
81
- 2392010.5 => 5.261939180030367,
82
- 2392191.5 => 5.192368075351851,
83
- 2392375.5 => 5.135275347080096,
84
- 2392556.5 => 5.092642595328925,
85
- 2392740.5 => 5.0631020675593845,
86
- 2392921.5 => 5.047585133826715,
87
- 2393105.5 => 5.045466038021345,
88
- 2393287.5 => 5.056725300162157,
89
- 2393471.5 => 5.0813396174220316,
90
- 2393652.5 => 5.118191578710935,
91
- 2393836.5 => 5.168077283418484,
92
- 2394017.5 => 5.228879316252119,
93
- 2394201.5 => 5.302037309391551,
94
- 2394382.5 => 5.384531632259211,
95
- 2394566.5 => 5.478379147577186,
96
- 2394748.5 => 5.580335613932505,
97
- 2394932.5 => 5.691789788972983,
98
- 2395113.5 => 5.80875494138661,
99
- 2395297.5 => 5.934144330408458,
100
- 2395478.5 => 6.062875593983534,
101
- 2395662.5 => 6.198153542957755,
102
- 2395843.5 => 6.334486342631209,
103
- 2396027.5 => 6.475251951900248,
104
- 2396209.5 => 6.615483952215641,
105
- 2396393.5 => 6.757060416676296,
106
- 2396574.5 => 6.894941705629094,
107
- 2396758.5 => 7.032466496923803,
108
- 2396939.5 => 7.163937749348335,
109
- 2397123.5 => 7.292473172750462,
110
- 2397304.5 => 7.412673143453404,
111
- 2397488.5 => 7.527299162998588,
112
- 2397670.5 => 7.631984548218753,
113
- 2397854.5 => 7.727845571025242,
114
- 2398035.5 => 7.811233918589153,
115
- 2398219.5 => 7.883805096017731,
116
- 2398400.5 => 7.942151870516433,
117
- 2398584.5 => 7.9871958259539895,
118
- 2398765.5 => 8.016533772126351,
119
- 2398949.5 => 8.030246708433822,
120
- 2399131.5 => 8.02701838727982,
121
- 2399315.5 => 8.00602743589197,
122
- 2399496.5 => 7.967334857492741,
123
- 2399680.5 => 7.909076736075594,
124
- 2399861.5 => 7.832672030889775,
125
- 2400045.5 => 7.73519070466137,
126
- 2400226.5 => 7.619518664506842,
127
- 2400410.5 => 7.4816235218118,
128
- 2400592.5 => 7.324994613580456,
129
- 2400776.5 => 7.146202934871676,
130
- 2400957.5 => 6.9503926382285375,
131
- 2401141.5 => 6.73130493384776,
132
- 2401322.5 => 6.496419397354267,
133
- 2401506.5 => 6.238403444540144,
134
- 2401687.5 => 5.966222444405794,
135
- 2401871.5 => 5.671527091411464,
136
- 2402053.5 => 5.362950462274329,
137
- 2402237.5 => 5.034600715553276,
138
- 2402418.5 => 4.6965018330360175,
139
- 2402602.5 => 4.3385322957757895,
140
- 2402783.5 => 3.973519127096933,
141
- 2402967.5 => 3.5906303869208167,
142
- 2403148.5 => 3.2036725995868243,
143
- 2403332.5 => 2.8012444581490232,
144
- 2403514.5 => 2.3956847018984218,
145
- 2403698.5 => 1.9796421127117891,
146
- 2403879.5 => 1.5660461742034346,
147
- 2404063.5 => 1.1428361434845933,
148
- 2404244.5 => 0.7254582284581174,
149
- 2404428.5 => 0.30178135991199984,
150
- 2404609.5 => -0.11270006148430323,
151
- 2404793.5 => -0.5300097435221406,
152
- 2404975.5 => -0.9370907950094551,
153
- 2405159.5 => -1.3412024731958803,
154
- 2405340.5 => -1.7298134540480932,
155
- 2405524.5 => -2.1142122995718458,
156
- 2405705.5 => -2.480366366734088,
157
- 2405889.5 => -2.83895781510422,
158
- 2406070.5 => -3.176956105380124,
159
- 2406254.5 => -3.504300154151409,
160
- 2406436.5 => -3.8108248494746757,
161
- 2406620.5 => -4.10223814009868,
162
- 2406801.5 => -4.3699035350160695,
163
- 2406985.5 => -4.621958792228032,
164
- 2407166.5 => -4.849622707292203,
165
- 2407350.5 => -5.060038124929611,
166
- 2407531.5 => -5.2461236702027385,
167
- 2407715.5 => -5.414009715942285,
168
- 2407897.5 => -5.559113801802489,
169
- 2408081.5 => -5.684979055402733,
170
- 2408262.5 => -5.788896181101112,
171
- 2408446.5 => -5.875063703703072,
172
- 2408627.5 => -5.941604136061755,
173
- 2408811.5 => -5.99187142911113,
174
- 2408992.5 => -6.025534115559931,
175
- 2409176.5 => -6.045223454604344,
176
- 2409358.5 => -6.051947540372789,
177
- 2409542.5 => -6.047693019280377,
178
- 2409723.5 => -6.034585530924514,
179
- 2409907.5 => -6.014253694220111,
180
- 2410088.5 => -5.989451801657724,
181
- 2410272.5 => -5.9615356388374785,
182
- 2410453.5 => -5.933547174681333,
183
- 2410637.5 => -5.9066933163237305,
184
- 2410819.5 => -5.883732076789566,
185
- 2411003.5 => -5.866053442239031,
186
- 2411184.5 => -5.855727871403548,
187
- 2411368.5 => -5.8537912883455165,
188
- 2411549.5 => -5.861293927323844,
189
- 2411733.5 => -5.879036033749507,
190
- 2411914.5 => -5.906436546760297,
191
- 2412098.5 => -5.9437407187970415,
192
- 2412280.5 => -5.988588134352584,
193
- 2412464.5 => -6.039608414140064,
194
- 2412645.5 => -6.092048605632098,
195
- 2412829.5 => -6.143066911075388,
196
- 2413010.5 => -6.18519588086268,
197
- 2413194.5 => -6.212372490839427,
198
- 2413375.5 => -6.214734852478125,
199
- 2413559.5 => -6.1812687926510375,
200
- 2413741.5 => -6.0995165979128165,
201
- 2413925.5 => -5.95200691711783,
202
- 2414106.5 => -5.725411356266838,
203
- 2414290.5 => -5.391101186767492,
204
- 2414471.5 => -4.936214592188059,
205
- 2414655.5 => -4.31790503046886,
206
- 2414836.5 => -3.52545025806083,
207
- 2415020.5 => -2.4388055967284674,
208
- 2415201.5 => -1.9866921101473605,
209
- 2415385.5 => -1.4881903065314066,
210
- 2415566.5 => -0.9618691218134782,
211
- 2415750.5 => -0.39284264593890794,
212
- 2415931.5 => 0.19767418413824753,
213
- 2416115.5 => 0.8264165244917904,
214
- 2416296.5 => 1.4700172355479844,
215
- 2416480.5 => 2.1468253465826375,
216
- 2416662.5 => 2.835652766092306,
217
- 2416846.5 => 3.5486047317343434,
218
- 2417027.5 => 4.263231363098808,
219
- 2417211.5 => 5.000259983924892,
220
- 2417392.5 => 5.732816046006328,
221
- 2417576.5 => 6.482353812962369,
222
- 2417757.5 => 7.221751119829495,
223
- 2417941.5 => 7.972880371561444,
224
- 2418123.5 => 8.712831317161704,
225
- 2418307.5 => 9.455454046423558,
226
- 2418488.5 => 10.178387509185434,
227
- 2418672.5 => 10.903463404820002,
228
- 2418853.5 => 11.605090872859282,
229
- 2419037.5 => 12.304684798828276,
230
- 2419218.5 => 12.977775178916021,
231
- 2419402.5 => 13.64513190798989,
232
- 2419584.5 => 14.287108978143385,
233
- 2419768.5 => 14.916572237369076,
234
- 2419949.5 => 15.515510607554367,
235
- 2420133.5 => 16.10284118737613,
236
- 2420314.5 => 16.65863855961404,
237
- 2420498.5 => 17.20068006434343,
238
- 2420679.5 => 17.710794402822042,
239
- 2420863.5 => 18.205520004226692,
240
- 2421045.5 => 18.67098146138676,
241
- 2421229.5 => 19.11729362430148,
242
- 2421410.5 => 19.53253120288024,
243
- 2421594.5 => 19.930579247056528,
244
- 2421775.5 => 20.29868147462184,
245
- 2421959.5 => 20.649370571074524,
246
- 2422140.5 => 20.971627610669987,
247
- 2422324.5 => 21.276649743274778,
248
- 2422506.5 => 21.55655418126106,
249
- 2422690.5 => 21.818167846062344,
250
- 2422871.5 => 22.055281124221217,
251
- 2423055.5 => 22.27655644857247,
252
- 2423236.5 => 22.47561690120095,
253
- 2423420.5 => 22.65996646290686,
254
- 2423601.5 => 22.82452002838678,
255
- 2423785.5 => 22.97571425952653,
256
- 2423967.5 => 23.110308267157464,
257
- 2424151.5 => 23.23229795912879,
258
- 2424332.5 => 23.339511501395894,
259
- 2424516.5 => 23.436563200676833,
260
- 2424697.5 => 23.52133058525957,
261
- 2424881.5 => 23.597688707429405,
262
- 2425062.5 => 23.664184372246805,
263
- 2425246.5 => 23.72407135482779,
264
- 2425428.5 => 23.776681991877023,
265
- 2425612.5 => 23.82419274912977,
266
- 2425793.5 => 23.866331353902197,
267
- 2425977.5 => 23.905460169259943,
268
- 2426158.5 => 23.941218197004247,
269
- 2426342.5 => 23.975692579033176,
270
- 2426523.5 => 24.008605928439557,
271
- 2426707.5 => 24.04187605377498,
272
- 2426889.5 => 24.07537378002682,
273
- 2427073.5 => 24.11058140261558,
274
- 2427254.5 => 24.14721547072987,
275
- 2427438.5 => 24.187142464135416,
276
- 2427619.5 => 24.229652439984108,
277
- 2427803.5 => 24.276712008407983,
278
- 2427984.5 => 24.327284837979363,
279
- 2428168.5 => 24.38350825339512,
280
- 2428350.5 => 24.44430127350479,
281
- 2428534.5 => 24.511366094895674,
282
- 2428715.5 => 24.583145405760572,
283
- 2428899.5 => 24.662288857343256,
284
- 2429080.5 => 24.74643544094861,
285
- 2429264.5 => 24.838554819441654,
286
- 2429445.5 => 24.935777490385995,
287
- 2429629.5 => 25.041422412562163,
288
- 2429811.5 => 25.15273021858507,
289
- 2429995.5 => 25.27216643328502,
290
- 2430176.5 => 25.39641349476654,
291
- 2430360.5 => 25.529540768204548,
292
- 2430541.5 => 25.667128929194487,
293
- 2430725.5 => 25.81363084582551,
294
- 2430906.5 => 25.96413859864814,
295
- 2431090.5 => 26.123484991687462,
296
- 2431272.5 => 26.287217201519887,
297
- 2431456.5 => 26.458739053598578,
298
- 2431637.5 => 26.63313685630417,
299
- 2431821.5 => 26.815971902751684,
300
- 2432002.5 => 27.00105856424981,
301
- 2432186.5 => 27.19429786593409,
302
- 2432367.5 => 27.38915617204269,
303
- 2432551.5 => 27.591855093366206,
304
- 2432733.5 => 27.796691496947233,
305
- 2432917.5 => 28.007936001208634,
306
- 2433098.5 => 28.219596370060827,
307
- 2433282.5 => 28.4384765624998,
308
- 2433463.5 => 28.65724359589477,
309
- 2433647.5 => 28.882964215782437,
310
- 2433828.5 => 29.108113222396952,
311
- 2434012.5 => 29.34000446979161,
312
- 2434194.5 => 29.57223350574489,
313
- 2434378.5 => 29.809796836408253,
314
- 2434559.5 => 30.046134632450332,
315
- 2434743.5 => 30.289022739879897,
316
- 2434924.5 => 30.53050884062472,
317
- 2435108.5 => 30.778591836086775,
318
- 2435289.5 => 31.025202633417564,
319
- 2435473.5 => 31.27856475284625,
320
- 2435655.5 => 31.53189044630176,
321
- 2435839.5 => 31.79085168727164,
322
- 2436020.5 => 32.04851687044061,
323
- 2436204.5 => 32.31358519491181,
324
- 2436385.5 => 32.57759273374779,
325
- 2436569.5 => 32.84949938063994,
326
- 2436750.5 => 33.12066519162579,
327
- 2436934.5 => 33.40033242784773,
328
- 2437116.5 => 33.68120412544363,
329
- 2437300.5 => 33.96974573155137,
330
- 2437481.5 => 34.258379750810946,
331
- 2437665.5 => 34.5569937600327,
332
- 2437846.5 => 34.85617296641749,
333
- 2438030.5 => 35.16617185935229,
334
- 2438211.5 => 35.47721532145181,
335
- 2438395.5 => 35.799955711962184,
336
- 2438577.5 => 36.12601075254611,
337
- 2438761.5 => 36.46287982255012,
338
- 2438942.5 => 36.801664953153704,
339
- 2439126.5 => 37.1539031471541,
340
- 2439307.5 => 37.50838994184596,
341
- 2439491.5 => 37.877141110449884,
342
- 2439672.5 => 38.24836458592608,
343
- 2439856.5 => 38.634572113308195,
344
- 2440038.5 => 39.02550887261282,
345
- 2440222.5 => 39.42989718222407,
346
- 2440403.5 => 39.83675728105027,
347
- 2440587.5 => 40.25961253333708,
348
- 2440768.5 => 40.68465798505122,
349
- 2440952.5 => 41.12591019247293,
350
- 2441133.5 => 41.568849508274525,
351
- 2441317.5 => 42.02796103684432,
352
- 2441499.5 => 42.49057858125434,
353
- 2441683.5 => 42.966532268043466,
354
- 2441864.5 => 43.442420967015096,
355
- 2442048.5 => 43.93353617862613,
356
- 2442229.5 => 44.42331491540972,
357
- 2442413.5 => 44.92735455766797,
358
- 2442594.5 => 45.428517738630035,
359
- 2442778.5 => 45.942622367844706,
360
- 2442960.5 => 46.454873246740135,
361
- 2443144.5 => 46.97557507852889,
362
- 2443325.5 => 47.489552682778594,
363
- 2443509.5 => 48.012750281605804,
364
- 2443690.5 => 48.52697224120766,
365
- 2443874.5 => 49.048043614533526,
366
- 2444055.5 => 49.557725033980205,
367
- 2444239.5 => 50.0715895041767,
368
- 2444421.5 => 50.574294001573435,
369
- 2444605.5 => 51.0754922955166,
370
- 2444786.5 => 51.56024559759862,
371
- 2444970.5 => 52.04321620585506,
372
- 2445151.5 => 52.50729086053434,
373
- 2445335.5 => 52.966488008352826,
374
- 2445516.5 => 53.4045449379355,
375
- 2445700.5 => 53.83473382284683,
376
- 2445882.5 => 54.24409727758939,
377
- 2446066.5 => 54.64058576938987,
378
- 2446247.5 => 55.01268563318263,
379
- 2446431.5 => 55.37200611165099,
380
- 2446612.5 => 55.706320752291504,
381
- 2446796.5 => 56.02643064426229,
382
- 2446977.5 => 56.321893441388966,
383
- 2447161.5 => 56.602817056686035,
384
- 2447343.5 => 56.8620766468739,
385
- 2447527.5 => 57.106458937032585,
386
- 2447708.5 => 57.330978845137,
387
- 2447892.5 => 57.54513390577631,
388
- 2448073.5 => 57.744507716448425,
389
- 2448257.5 => 57.93896314871017,
390
- 2448438.5 => 58.126022272994305,
391
- 2448622.5 => 58.316598521993,
392
- 2448804.5 => 58.51100219137879,
393
- 2448988.5 => 58.72000281988949,
394
- 2449169.5 => 58.94513761608323,
395
- 2449353.5 => 59.20242227252311,
396
- 2449534.5 => 59.492985772485554,
397
- 2449718.5 => 59.83746411076572,
398
- 2449899.5 => 60.236736812592426,
399
- 2450083.5 => 60.717905576806515,
400
- 2450265.5 => 61.2837935622083,
401
- 2450449.5 => 61.96410528309934,
402
- 2450630.5 => 62.7581330776884,
403
- 2450814.5 => 62.966,
404
- 2450995.5 => 63.284,
405
- 2451179.5 => 63.467,
406
- 2451360.5 => 63.664 # 1999-07-01T00:00:00+00:00
407
- }.freeze
408
-
409
- RECENT_LEAP_SECONDS = {
410
- 2451544.5 => 63.829, # 2000-01-01T00:00:00+00:00
411
- 2451726.5 => 63.980,
412
- 2451910.5 => 64.091,
413
- 2452091.5 => 64.212,
414
- 2452275.5 => 64.300,
415
- 2452456.5 => 64.413,
416
- 2452640.5 => 64.473,
417
- 2452821.5 => 64.551,
418
- 2453005.5 => 64.574,
419
- 2453187.5 => 64.653,
420
- 2453371.5 => 64.688,
421
- 2453552.5 => 64.799,
422
- 2453736.5 => 64.845,
423
- 2453917.5 => 64.989,
424
- 2454101.5 => 65.146,
425
- 2454282.5 => 65.341,
426
- 2454466.5 => 65.457,
427
- 2454648.5 => 65.629,
428
- 2454832.5 => 65.777,
429
- 2455013.5 => 65.951,
430
- 2455197.5 => 66.070,
431
- 2455378.5 => 66.241,
432
- 2455562.5 => 66.325,
433
- 2455743.5 => 66.475,
434
- 2455927.5 => 66.603,
435
- 2456109.5 => 66.771,
436
- 2456293.5 => 66.907,
437
- 2456474.5 => 67.127,
438
- 2456658.5 => 67.281,
439
- 2456839.5 => 67.486,
440
- 2457023.5 => 67.644,
441
- 2457204.5 => 67.861,
442
- 2457388.5 => 68.102,
443
- 2457570.5 => 68.396,
444
- 2457754.5 => 68.593,
445
- 2457935.5 => 68.824,
446
- 2458119.5 => 68.968,
447
- 2458300.5 => 69.113,
448
- 2458484.5 => 69.220,
449
- 2458665.5 => 69.358,
450
- 2458849.5 => 69.361,
451
- 2459031.5 => 69.424,
452
- 2459215.5 => 69.359,
453
- 2459396.5 => 69.351,
454
- 2459580.5 => 69.294,
455
- 2459761.5 => 69.253,
456
- 2459945.5 => 69.204,
457
- 2460126.5 => 69.220,
458
- 2460310.5 => 69.175,
459
- 2460492.5 => 69.188,
460
- 2460676.5 => 69.138,
461
- 2460857.5 => 69.139 # 2025-07-01T00:00:00+00:00
462
- }.freeze
463
-
464
- OLDEST_JD = 2378496.5
465
- FIRST_RECENT_JD = 2451544.5
466
- MOST_RECENT_JD = 2460857.5
467
-
468
8
  # @param date [Date]
469
9
  # @param decimal [Numeric] Hour of the day, in decimal hours
470
10
  # @return [::Time] Date and time
@@ -502,38 +42,23 @@ module Astronoby
502
42
  end
503
43
 
504
44
  # @param instant [Numeric, Time, Date, DateTime]
505
- # @return [Integer, Float] Number of leap seconds for the given instant
45
+ # @return [Numeric] Delta T (TT - UT1) in seconds for the given instant
506
46
  def self.terrestrial_universal_time_delta(instant)
507
- # Source:
508
- # Title: Astronomical Algorithms
509
- # Author: Jean Meeus
510
- # Edition: 2nd edition
511
- # Chapter: 10 - Dynamical Time and Universal Time
512
-
513
- jd = case instant
47
+ case instant
514
48
  when Numeric
515
- instant
49
+ IERS::DeltaT.at(jd: instant).delta_t
516
50
  when ::Time, ::Date, ::DateTime
517
- JulianDate.from_time(instant)
51
+ IERS::DeltaT.at(instant).delta_t
518
52
  else
519
53
  raise IncompatibleArgumentsError,
520
54
  "Expected a Numeric, Time, Date or DateTime object, got #{instant.class}"
521
55
  end
522
-
523
- return RECENT_LEAP_SECONDS[MOST_RECENT_JD] if jd >= MOST_RECENT_JD
524
- return 0 if jd < OLDEST_JD
525
-
526
- if jd >= FIRST_RECENT_JD
527
- closest_jd = RECENT_LEAP_SECONDS.keys.bsearch { |key| key >= jd }
528
- leap_seconds = RECENT_LEAP_SECONDS[closest_jd]
56
+ rescue IERS::OutOfRangeError => e
57
+ if e.available_range
58
+ IERS::DeltaT.at(mjd: e.available_range.end).delta_t
529
59
  else
530
- closest_jd = OLD_LEAP_SECONDS.keys.bsearch { |key| key >= jd }
531
- leap_seconds = OLD_LEAP_SECONDS[closest_jd]
60
+ 0
532
61
  end
533
-
534
- return leap_seconds if leap_seconds
535
-
536
- 0.0
537
62
  end
538
63
  end
539
64
  end
@@ -3,24 +3,34 @@
3
3
  require "matrix"
4
4
 
5
5
  module Astronoby
6
+ # A 3D vector extending Ruby's Vector class. Provides named component
7
+ # accessors and type-aware magnitude computation for Distance and Velocity
8
+ # vectors.
6
9
  class Vector < ::Vector
7
10
  def initialize(...)
8
11
  super
9
12
  freeze
10
13
  end
11
14
 
15
+ # @return [Object] the first component (x-axis)
12
16
  def x
13
17
  self[0]
14
18
  end
15
19
 
20
+ # @return [Object] the second component (y-axis)
16
21
  def y
17
22
  self[1]
18
23
  end
19
24
 
25
+ # @return [Object] the third component (z-axis)
20
26
  def z
21
27
  self[2]
22
28
  end
23
29
 
30
+ # Returns the Euclidean magnitude of the vector. If all elements are
31
+ # Distance or Velocity instances, the result is wrapped in the same type.
32
+ #
33
+ # @return [Astronoby::Distance, Astronoby::Velocity, Numeric] the magnitude
24
34
  def magnitude
25
35
  if all? { _1.is_a?(Astronoby::Distance) }
26
36
  Astronoby::Distance.new(super)