astronoby 0.4.0 → 0.5.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +60 -0
- data/Gemfile.lock +17 -15
- data/README.md +147 -12
- data/UPGRADING.md +48 -0
- data/lib/astronoby/astronomical_models/ephemeride_lunaire_parisienne.rb +143 -0
- data/lib/astronoby/astronomical_models/moon_phases_periodic_terms.rb +249 -0
- data/lib/astronoby/bodies/moon.rb +335 -0
- data/lib/astronoby/bodies/sun.rb +15 -13
- data/lib/astronoby/constants.rb +6 -0
- data/lib/astronoby/coordinates/equatorial.rb +4 -3
- data/lib/astronoby/coordinates/horizontal.rb +18 -10
- data/lib/astronoby/distance.rb +83 -0
- data/lib/astronoby/events/moon_phases.rb +143 -0
- data/lib/astronoby/events/observation_events.rb +74 -134
- data/lib/astronoby/events/rise_transit_set_iteration.rb +215 -0
- data/lib/astronoby/geocentric_parallax.rb +36 -56
- data/lib/astronoby/moon_phase.rb +43 -0
- data/lib/astronoby/observer.rb +6 -4
- data/lib/astronoby/refraction.rb +8 -10
- data/lib/astronoby/util/maths.rb +1 -1
- data/lib/astronoby/version.rb +1 -1
- data/lib/astronoby.rb +7 -0
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 43ef390a6ab6a498edbf148b2af44c906daf73ff9ba61b5aafeadd828fb550e4
|
4
|
+
data.tar.gz: b2cf0743676aa49f95f24c62b3d5d759553014bc52114260a71ecedfb9e6c1cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 052bfebf4ddaf6ef3f24883fec090a831d38a9e4124dd5f561d6b1dd7074b6385502396edddd5496ab6066ff93acab4f220ec3aaa244ad0638c0b65fbaace55f
|
7
|
+
data.tar.gz: fe37ac2714328893b068ba958e37a3b057a76ddfa1b299a35f22be005687d3168d20e98ebe571db519bd6cf69227cc0f0dc4c0889dd9ca5bb9d1abb2b1ee550d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,65 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.5.0 - 2024-06-11
|
4
|
+
|
5
|
+
_If you are upgrading: please see [UPGRADING.md]._
|
6
|
+
|
7
|
+
[UPGRADING.md]: https://github.com/rhannequin/astronoby/blob/main/UPGRADING.md
|
8
|
+
|
9
|
+
### Features
|
10
|
+
|
11
|
+
* Make `Sun#mean_anomaly` public ([#72])
|
12
|
+
* Moon ecliptic coordinates ([#73])
|
13
|
+
* Moon apparent geocentric equatorial coordinates ([#75])
|
14
|
+
* Moon horizontal coordinates ([#76])
|
15
|
+
* Assume Moon's equatorial coordinates are geocentric ([#77])
|
16
|
+
* Use observer object for geocentric parallax ([#79])
|
17
|
+
* Moon's phase angle and illuminated fraction ([#80])
|
18
|
+
* Monthly Moon phases ([#82])
|
19
|
+
* Rationalize negative degree angles ([#83])
|
20
|
+
* Factorize Moon phases periodic terms ([#85])
|
21
|
+
* Introduce observation events for Moon ([#86])
|
22
|
+
|
23
|
+
[#72]: https://github.com/rhannequin/astronoby/pull/72
|
24
|
+
[#73]: https://github.com/rhannequin/astronoby/pull/73
|
25
|
+
[#75]: https://github.com/rhannequin/astronoby/pull/75
|
26
|
+
[#76]: https://github.com/rhannequin/astronoby/pull/76
|
27
|
+
[#77]: https://github.com/rhannequin/astronoby/pull/77
|
28
|
+
[#79]: https://github.com/rhannequin/astronoby/pull/79
|
29
|
+
[#80]: https://github.com/rhannequin/astronoby/pull/80
|
30
|
+
[#82]: https://github.com/rhannequin/astronoby/pull/82
|
31
|
+
[#83]: https://github.com/rhannequin/astronoby/pull/83
|
32
|
+
[#85]: https://github.com/rhannequin/astronoby/pull/85
|
33
|
+
[#86]: https://github.com/rhannequin/astronoby/pull/86
|
34
|
+
|
35
|
+
### Improvements
|
36
|
+
|
37
|
+
* Create FUNDING.yml ([#70])
|
38
|
+
* Bump standard from 1.35.1 to 1.36.0 ([#71])
|
39
|
+
* Bump rexml from 3.2.6 to 3.2.8 ([#74])
|
40
|
+
* Expand the number of tested Ruby versions ([#84])
|
41
|
+
* Add Ruby 3.1.6 and 3.3.2 coverage ([#88])
|
42
|
+
* Improve and update documentation ([#87])
|
43
|
+
* Update UPGRADING.md ([#89])
|
44
|
+
|
45
|
+
[#70]: https://github.com/rhannequin/astronoby/pull/70
|
46
|
+
[#71]: https://github.com/rhannequin/astronoby/pull/71
|
47
|
+
[#74]: https://github.com/rhannequin/astronoby/pull/74
|
48
|
+
[#84]: https://github.com/rhannequin/astronoby/pull/84
|
49
|
+
[#88]: https://github.com/rhannequin/astronoby/pull/88
|
50
|
+
[#87]: https://github.com/rhannequin/astronoby/pull/87
|
51
|
+
[#89]: https://github.com/rhannequin/astronoby/pull/89
|
52
|
+
|
53
|
+
### Backward-incompatible changes
|
54
|
+
|
55
|
+
* Use Observer in Horizontal coordinates ([#69])
|
56
|
+
* Introduce `Astronoby::Distance` value object ([#78])
|
57
|
+
|
58
|
+
[#69]: https://github.com/rhannequin/astronoby/pull/69
|
59
|
+
[#78]: https://github.com/rhannequin/astronoby/pull/78
|
60
|
+
|
61
|
+
**Full Changelog**: https://github.com/rhannequin/astronoby/compare/v0.4.0...v0.5.0
|
62
|
+
|
3
63
|
## 0.4.0 - 2024-04-29
|
4
64
|
|
5
65
|
_If you are upgrading: please see [UPGRADING.md]._
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
astronoby (0.
|
4
|
+
astronoby (0.5.0)
|
5
5
|
matrix (~> 0.4.2)
|
6
6
|
rake (~> 13.0)
|
7
7
|
rspec (~> 3.0)
|
@@ -11,19 +11,20 @@ GEM
|
|
11
11
|
specs:
|
12
12
|
ast (2.4.2)
|
13
13
|
diff-lcs (1.5.1)
|
14
|
-
json (2.7.
|
14
|
+
json (2.7.2)
|
15
15
|
language_server-protocol (3.17.0.3)
|
16
16
|
lint_roller (1.1.0)
|
17
17
|
matrix (0.4.2)
|
18
18
|
parallel (1.24.0)
|
19
|
-
parser (3.3.0
|
19
|
+
parser (3.3.1.0)
|
20
20
|
ast (~> 2.4.1)
|
21
21
|
racc
|
22
22
|
racc (1.7.3)
|
23
23
|
rainbow (3.1.1)
|
24
24
|
rake (13.2.1)
|
25
|
-
regexp_parser (2.9.
|
26
|
-
rexml (3.2.
|
25
|
+
regexp_parser (2.9.1)
|
26
|
+
rexml (3.2.8)
|
27
|
+
strscan (>= 3.0.9)
|
27
28
|
rspec (3.13.0)
|
28
29
|
rspec-core (~> 3.13.0)
|
29
30
|
rspec-expectations (~> 3.13.0)
|
@@ -37,7 +38,7 @@ GEM
|
|
37
38
|
diff-lcs (>= 1.2.0, < 2.0)
|
38
39
|
rspec-support (~> 3.13.0)
|
39
40
|
rspec-support (3.13.1)
|
40
|
-
rubocop (1.
|
41
|
+
rubocop (1.63.5)
|
41
42
|
json (~> 2.3)
|
42
43
|
language_server-protocol (>= 3.17.0)
|
43
44
|
parallel (~> 1.10)
|
@@ -48,24 +49,25 @@ GEM
|
|
48
49
|
rubocop-ast (>= 1.31.1, < 2.0)
|
49
50
|
ruby-progressbar (~> 1.7)
|
50
51
|
unicode-display_width (>= 2.4.0, < 3.0)
|
51
|
-
rubocop-ast (1.31.
|
52
|
-
parser (>= 3.3.0
|
53
|
-
rubocop-performance (1.
|
52
|
+
rubocop-ast (1.31.3)
|
53
|
+
parser (>= 3.3.1.0)
|
54
|
+
rubocop-performance (1.21.0)
|
54
55
|
rubocop (>= 1.48.1, < 2.0)
|
55
|
-
rubocop-ast (>= 1.
|
56
|
+
rubocop-ast (>= 1.31.1, < 2.0)
|
56
57
|
ruby-progressbar (1.13.0)
|
57
|
-
standard (1.
|
58
|
+
standard (1.36.0)
|
58
59
|
language_server-protocol (~> 3.17.0.2)
|
59
60
|
lint_roller (~> 1.0)
|
60
|
-
rubocop (~> 1.
|
61
|
+
rubocop (~> 1.63.0)
|
61
62
|
standard-custom (~> 1.0.0)
|
62
|
-
standard-performance (~> 1.
|
63
|
+
standard-performance (~> 1.4)
|
63
64
|
standard-custom (1.0.2)
|
64
65
|
lint_roller (~> 1.0)
|
65
66
|
rubocop (~> 1.50)
|
66
|
-
standard-performance (1.
|
67
|
+
standard-performance (1.4.0)
|
67
68
|
lint_roller (~> 1.1)
|
68
|
-
rubocop-performance (~> 1.
|
69
|
+
rubocop-performance (~> 1.21.0)
|
70
|
+
strscan (3.1.0)
|
69
71
|
unicode-display_width (2.5.0)
|
70
72
|
|
71
73
|
PLATFORMS
|
data/README.md
CHANGED
@@ -11,6 +11,27 @@ The main reference is:
|
|
11
11
|
- _Practical Astronomy with your Calculator or Spreadsheet_ by Peter
|
12
12
|
Duffet-Smith and Jonathan Zwart
|
13
13
|
|
14
|
+
## Content
|
15
|
+
- [Installation](#installation)
|
16
|
+
- [Usage](#usage)
|
17
|
+
- [Angle manipulation](#angle-manipulation)
|
18
|
+
- [Coordinates conversion](#coordinates-conversion)
|
19
|
+
- [Sun](#sun)
|
20
|
+
- [Sun's location in the sky](#suns-location-in-the-sky)
|
21
|
+
- [Sunrise and sunset times and azimuths](#sunrise-and-sunset-times-and-azimuths)
|
22
|
+
- [Twilight times](#twilight-times)
|
23
|
+
- [Solstice and Equinox times](#solstice-and-equinox-times)
|
24
|
+
- [Moon](#moon)
|
25
|
+
- [Moon's location in the sky](#moons-location-in-the-sky)
|
26
|
+
- [Moon's current attributes](#moons-current-attributes)
|
27
|
+
- [Moon's phases of the month](#moons-phases-of-the-month)
|
28
|
+
- [Moonrise and moonset times and azimuths](#moonrise-and-moonset-times-and-azimuths)
|
29
|
+
- [Precision](#precision)
|
30
|
+
- [Development](#development)
|
31
|
+
- [Contributing](#contributing)
|
32
|
+
- [License](#license)
|
33
|
+
- [Code of Conduct](#code-of-conduct)
|
34
|
+
|
14
35
|
## Installation
|
15
36
|
|
16
37
|
Install the gem and add to the application's Gemfile by executing:
|
@@ -46,9 +67,35 @@ angle.cos
|
|
46
67
|
# => 1.0
|
47
68
|
```
|
48
69
|
|
70
|
+
### Distance manipulation
|
71
|
+
|
72
|
+
```rb
|
73
|
+
distance1 = Astronoby::Distance.from_astronomical_units(1)
|
74
|
+
distance2 = Astronoby::Distance.from_kilometers(149_597_870.7)
|
75
|
+
distance3 = Astronoby::Distance.from_meters(300)
|
76
|
+
|
77
|
+
distance1 == distance2
|
78
|
+
# => true
|
79
|
+
|
80
|
+
distance1 > distance3
|
81
|
+
# => true
|
82
|
+
|
83
|
+
distance =
|
84
|
+
Astronoby::Distance.from_m(300) +
|
85
|
+
Astronoby::Distance.from_km(3)
|
86
|
+
|
87
|
+
distance.km
|
88
|
+
# => 3.3
|
89
|
+
```
|
90
|
+
|
49
91
|
### Coordinates conversion
|
50
92
|
|
51
93
|
```rb
|
94
|
+
observer = Astronoby::Observer.new(
|
95
|
+
latitude: Astronoby::Angle.from_degrees(38),
|
96
|
+
longitude: Astronoby::Angle.from_degrees(-78)
|
97
|
+
)
|
98
|
+
|
52
99
|
equatorial = Astronoby::Coordinates::Equatorial.new(
|
53
100
|
right_ascension: Astronoby::Angle.from_hms(17, 43, 54),
|
54
101
|
declination: Astronoby::Angle.from_dms(-22, 10, 0)
|
@@ -56,8 +103,7 @@ equatorial = Astronoby::Coordinates::Equatorial.new(
|
|
56
103
|
|
57
104
|
horizontal = equatorial.to_horizontal(
|
58
105
|
time: Time.new(2016, 1, 21, 21, 30, 0, "-05:00"),
|
59
|
-
|
60
|
-
longitude: Astronoby::Angle.from_degrees(-78)
|
106
|
+
observer: observer
|
61
107
|
)
|
62
108
|
|
63
109
|
horizontal.altitude.str(:dms)
|
@@ -67,19 +113,22 @@ horizontal.azimuth.str(:dms)
|
|
67
113
|
# => "+341° 33′ 21.587″"
|
68
114
|
```
|
69
115
|
|
70
|
-
### Sun
|
116
|
+
### Sun
|
117
|
+
|
118
|
+
#### Sun's location in the sky
|
71
119
|
|
72
120
|
```rb
|
73
121
|
time = Time.utc(2023, 2, 17, 11, 0, 0)
|
74
122
|
|
75
|
-
|
76
|
-
|
123
|
+
observer = Astronoby::Observer.new(
|
124
|
+
latitude: Astronoby::Angle.from_degrees(48.8566),
|
125
|
+
longitude: Astronoby::Angle.from_degrees(2.3522)
|
126
|
+
)
|
77
127
|
|
78
128
|
sun = Astronoby::Sun.new(time: time)
|
79
129
|
|
80
130
|
horizontal_coordinates = sun.horizontal_coordinates(
|
81
|
-
|
82
|
-
longitude: longitude
|
131
|
+
observer: observer
|
83
132
|
)
|
84
133
|
|
85
134
|
horizontal_coordinates.altitude.degrees
|
@@ -89,7 +138,7 @@ horizontal_coordinates.altitude.str(:dms)
|
|
89
138
|
# => "+27° 30′ 0.2966″"
|
90
139
|
```
|
91
140
|
|
92
|
-
|
141
|
+
#### Sunrise and sunset times and azimuths
|
93
142
|
|
94
143
|
```rb
|
95
144
|
time = Time.new(2015, 2, 5)
|
@@ -104,22 +153,22 @@ observation_events.rising_time
|
|
104
153
|
# => 2015-02-05 12:12:59 UTC
|
105
154
|
|
106
155
|
observation_events.rising_azimuth.str(:dms)
|
107
|
-
# => "+109°
|
156
|
+
# => "+109° 29′ 34.3674″"
|
108
157
|
|
109
158
|
observation_events.transit_time
|
110
159
|
# => 2015-02-05 17:25:59 UTC
|
111
160
|
|
112
161
|
observation_events.transit_altitude.str(:dms)
|
113
|
-
# => "+36° 8′ 15.
|
162
|
+
# => "+36° 8′ 15.8197″"
|
114
163
|
|
115
164
|
observation_events.setting_time
|
116
165
|
# => 2015-02-05 22:39:27 UTC
|
117
166
|
|
118
167
|
observation_events.setting_azimuth.str(:dms)
|
119
|
-
# => "+250°
|
168
|
+
# => "+250° 40′ 42.8609″"
|
120
169
|
```
|
121
170
|
|
122
|
-
|
171
|
+
#### Twilight times
|
123
172
|
|
124
173
|
```rb
|
125
174
|
time = Time.new(2024, 1, 1)
|
@@ -161,6 +210,92 @@ Astronoby::EquinoxSolstice.june_solstice(year)
|
|
161
210
|
# => 2024-06-20 20:50:18 UTC
|
162
211
|
```
|
163
212
|
|
213
|
+
### Moon
|
214
|
+
|
215
|
+
#### Moon's location in the sky
|
216
|
+
|
217
|
+
```rb
|
218
|
+
time = Time.utc(2023, 2, 17, 11, 0, 0)
|
219
|
+
|
220
|
+
observer = Astronoby::Observer.new(
|
221
|
+
latitude: Astronoby::Angle.from_degrees(48.8566),
|
222
|
+
longitude: Astronoby::Angle.from_degrees(2.3522)
|
223
|
+
)
|
224
|
+
|
225
|
+
moon = Astronoby::Moon.new(time: time)
|
226
|
+
|
227
|
+
horizontal_coordinates = moon.horizontal_coordinates(
|
228
|
+
observer: observer
|
229
|
+
)
|
230
|
+
|
231
|
+
horizontal_coordinates.altitude.degrees
|
232
|
+
# => 10.277834691708053
|
233
|
+
|
234
|
+
horizontal_coordinates.altitude.str(:dms)
|
235
|
+
# => "+10° 16′ 40.2048″"
|
236
|
+
```
|
237
|
+
|
238
|
+
#### Moon's current attributes
|
239
|
+
|
240
|
+
```rb
|
241
|
+
time = Time.utc(2024, 6, 1, 10, 0, 0)
|
242
|
+
moon = Astronoby::Moon.new(time: time)
|
243
|
+
|
244
|
+
moon.illuminated_fraction.round(2)
|
245
|
+
# => 0.31
|
246
|
+
|
247
|
+
moon.distance.km.round
|
248
|
+
# => 368409
|
249
|
+
|
250
|
+
moon.phase_angle.degrees.round
|
251
|
+
# => 112
|
252
|
+
```
|
253
|
+
|
254
|
+
#### Moon's phases of the month
|
255
|
+
|
256
|
+
```rb
|
257
|
+
june_phases = Astronoby::Moon.monthly_phase_events(
|
258
|
+
year: 2024,
|
259
|
+
month: 6
|
260
|
+
)
|
261
|
+
|
262
|
+
june_phases.each { puts "#{_1.phase}: #{_1.time}" }
|
263
|
+
# new_moon: 2024-06-06 12:37:41 UTC
|
264
|
+
# first_quarter: 2024-06-14 05:18:28 UTC
|
265
|
+
# full_moon: 2024-06-22 01:07:53 UTC
|
266
|
+
# last_quarter: 2024-06-28 21:53:25 UTC
|
267
|
+
```
|
268
|
+
|
269
|
+
#### Moonrise and moonset times and azimuths
|
270
|
+
|
271
|
+
```rb
|
272
|
+
time = Time.utc(2024, 6, 1, 10, 0, 0)
|
273
|
+
observer = Astronoby::Observer.new(
|
274
|
+
latitude: Astronoby::Angle.from_degrees(48.8566),
|
275
|
+
longitude: Astronoby::Angle.from_degrees(2.3522)
|
276
|
+
)
|
277
|
+
moon = Astronoby::Moon.new(time: time)
|
278
|
+
observation_events = moon.observation_events(observer: observer)
|
279
|
+
|
280
|
+
observation_events.rising_time
|
281
|
+
# => 2024-06-01 00:35:36 UTC
|
282
|
+
|
283
|
+
observation_events.rising_azimuth.str(:dms)
|
284
|
+
# => "+93° 7′ 43.2347″"
|
285
|
+
|
286
|
+
observation_events.transit_time
|
287
|
+
# => 2024-06-01 02:42:43 UTC
|
288
|
+
|
289
|
+
observation_events.transit_altitude.str(:dms)
|
290
|
+
# => "+26° 59′ 30.9915″"
|
291
|
+
|
292
|
+
observation_events.setting_time
|
293
|
+
# => 2024-06-01 16:02:26 UTC
|
294
|
+
|
295
|
+
observation_events.setting_azimuth.str(:dms)
|
296
|
+
# => "+273° 29′ 30.0954″"
|
297
|
+
```
|
298
|
+
|
164
299
|
## Precision
|
165
300
|
|
166
301
|
The current precision for the Sun's apparent location in the sky, compared
|
data/UPGRADING.md
CHANGED
@@ -7,6 +7,54 @@ changes to it as long as a major version has not been released.
|
|
7
7
|
If you are already using Astronoby and wish to follow the changes to its
|
8
8
|
public API, please read the upgrading notes for each release.
|
9
9
|
|
10
|
+
## Upgrading from 0.4.0 to 0.5.0
|
11
|
+
|
12
|
+
### `Sun#horizontal_coordinates` method signature changed ([#69])
|
13
|
+
|
14
|
+
`Astronoby::Sun#horizontal_coordinates` expects an `observer`
|
15
|
+
(`Astronoby::Observer`) key argument instead of `latitude` and `longitude`
|
16
|
+
angles.
|
17
|
+
|
18
|
+
[#69]: https://github.com/rhannequin/astronoby/pull/69
|
19
|
+
|
20
|
+
### `Sun#distance` now returns an `Astronoby::Distance` ([#78])
|
21
|
+
|
22
|
+
[#78]: https://github.com/rhannequin/astronoby/pull/78
|
23
|
+
|
24
|
+
### `Coordinates::Equatorial#to_horizontal` method signature changed ([#69])
|
25
|
+
|
26
|
+
`Astronoby::Coordinates::Equatorial#to_horizontal` expects an `observer`
|
27
|
+
(`Astronoby::Observer`) key argument instead of `latitude` and `longitude`
|
28
|
+
angles.
|
29
|
+
|
30
|
+
### `Coordinates::Horizontal` constructor and attributes changed ([#69])
|
31
|
+
|
32
|
+
`Astronoby::Coordinates::Horizontal::new` now expects an `observer`
|
33
|
+
(`Astronoby::Observer`) key argument instead of `latitude` and `longitude`,
|
34
|
+
and therefore now exposes `#observer` instead of `#latitude` and `#longitude`.
|
35
|
+
|
36
|
+
### `GeocentricParallax#angle` method signature changed ([#78])
|
37
|
+
|
38
|
+
`Astronoby::GeocentricParallax#angle`'s key argument `distance` is now
|
39
|
+
expected to be an instance of `Astronoby::Distance` instead of a `Numeric`.
|
40
|
+
|
41
|
+
### `GeocentricParallax#for_equatorial_coordinates` method signature changed ([#69])
|
42
|
+
|
43
|
+
`Astronoby::GeocentricParallax#for_equatorial_coordinates` expects an
|
44
|
+
`observer` (`Astronoby::Observer`) key argument instead of `latitude`,
|
45
|
+
`longitude` and `elevation`.
|
46
|
+
|
47
|
+
### `Observer` constructor changed ([#78])
|
48
|
+
|
49
|
+
`Astronoby::Observer::new`'s key argument `distance` is now expected to be
|
50
|
+
an instance of `Astronoby::Distance` instead of a `Numeric`.
|
51
|
+
|
52
|
+
### `Refraction` methods signatures changed ([#69])
|
53
|
+
|
54
|
+
`Astronoby::Refraction`'s constructor doesn't accept the `observer` key
|
55
|
+
argument anymore. Therefore, the methods `::angle` and
|
56
|
+
`::correct_horizontal_coordinates` neither.
|
57
|
+
|
10
58
|
## Upgrading from 0.3.0 to 0.4.0
|
11
59
|
|
12
60
|
### `Body` class removed ([#50])
|
@@ -0,0 +1,143 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Astronoby
|
4
|
+
class EphemerideLunaireParisienne
|
5
|
+
# Lunar theory: Éphéméride Lunaire Parisienne
|
6
|
+
# By Jean Chapront, Michelle Chapront-Touzé
|
7
|
+
# https://en.wikipedia.org/wiki/Ephemeride_Lunaire_Parisienne
|
8
|
+
|
9
|
+
DEGREES_UNIT = 10**-6
|
10
|
+
|
11
|
+
# @return [Array] Periodic terms for the Moon's longitude and distance
|
12
|
+
def self.periodic_terms_for_moon_longitude_and_distance
|
13
|
+
[
|
14
|
+
[0, 0, 1, 0, 6288774, -20905355],
|
15
|
+
[2, 0, -1, 0, 1274027, -3699111],
|
16
|
+
[2, 0, 0, 0, 658314, -2955968],
|
17
|
+
[0, 0, 2, 0, 213618, -569925],
|
18
|
+
[0, 1, 0, 0, -185116, 48888],
|
19
|
+
[0, 0, 0, 2, -114332, -3149],
|
20
|
+
[2, 0, -2, 0, 58793, 246158],
|
21
|
+
[2, -1, -1, 0, 57066, -152138],
|
22
|
+
[2, 0, 1, 0, 53322, -170733],
|
23
|
+
[2, -1, 0, 0, 45758, -204586],
|
24
|
+
[0, 1, -1, 0, -40923, -129620],
|
25
|
+
[1, 0, 0, 0, -34720, 108743],
|
26
|
+
[0, 1, 1, 0, -30383, 104755],
|
27
|
+
[2, 0, 0, -2, 15327, 10321],
|
28
|
+
[0, 0, 1, 2, -12528, 0],
|
29
|
+
[0, 0, 1, -2, 10980, 79661],
|
30
|
+
[4, 0, -1, 0, 10675, -34782],
|
31
|
+
[0, 0, 3, 0, 10034, -23210],
|
32
|
+
[4, 0, -2, 0, 8548, -21636],
|
33
|
+
[2, 1, -1, 0, -7888, 24208],
|
34
|
+
[2, 1, 0, 0, -6766, 30824],
|
35
|
+
[1, 0, -1, 0, -5163, -8379],
|
36
|
+
[1, 1, 0, 0, 4987, -16675],
|
37
|
+
[2, -1, 1, 0, 4036, -12831],
|
38
|
+
[2, 0, 2, 0, 3994, -10445],
|
39
|
+
[4, 0, 0, 0, 3861, -11650],
|
40
|
+
[2, 0, -3, 0, 3665, 14403],
|
41
|
+
[0, 1, -2, 0, -2689, -7003],
|
42
|
+
[2, 0, -1, 2, -2602, 0],
|
43
|
+
[2, -1, -2, 0, 2390, 10056],
|
44
|
+
[1, 0, 1, 0, -2348, 6322],
|
45
|
+
[2, -2, 0, 0, 2236, -9884],
|
46
|
+
[0, 1, 2, 0, -2120, 5751],
|
47
|
+
[0, 2, 0, 0, -2069, 0],
|
48
|
+
[2, -2, -1, 0, 2048, -4950],
|
49
|
+
[2, 0, 1, -2, -1773, 4130],
|
50
|
+
[2, 0, 0, 2, -1595, 0],
|
51
|
+
[4, -1, -1, 0, 1215, -3958],
|
52
|
+
[0, 0, 2, 2, -1110, 0],
|
53
|
+
[3, 0, -1, 0, -892, 3258],
|
54
|
+
[2, 1, 1, 0, -810, 2616],
|
55
|
+
[4, -1, -2, 0, 759, -1897],
|
56
|
+
[0, 2, -1, 0, -713, -2117],
|
57
|
+
[2, 2, -1, 0, -700, 2354],
|
58
|
+
[2, 1, -2, 0, 691, 0],
|
59
|
+
[2, -1, 0, -2, 596, 0],
|
60
|
+
[4, 0, 1, 0, 549, -1423],
|
61
|
+
[0, 0, 4, 0, 537, -1117],
|
62
|
+
[4, -1, 0, 0, 520, -1571],
|
63
|
+
[1, 0, -2, 0, -487, -1739],
|
64
|
+
[2, 1, 0, -2, -399, 0],
|
65
|
+
[0, 0, 2, -2, -381, -4421],
|
66
|
+
[1, 1, 1, 0, 351, 0],
|
67
|
+
[3, 0, -2, 0, -340, 0],
|
68
|
+
[4, 0, -3, 0, 330, 0],
|
69
|
+
[2, -1, 2, 0, 327, 0],
|
70
|
+
[0, 2, 1, 0, -323, 1165],
|
71
|
+
[1, 1, -1, 0, 299, 0],
|
72
|
+
[2, 0, 3, 0, 294, 0],
|
73
|
+
[2, 0, -1, -2, 0, 8752]
|
74
|
+
]
|
75
|
+
end
|
76
|
+
|
77
|
+
# @return [Array] Periodic terms for the Moon's latitude
|
78
|
+
def self.periodic_terms_for_moon_latitude
|
79
|
+
[
|
80
|
+
[0, 0, 0, 1, 5128122],
|
81
|
+
[0, 0, 1, 1, 280602],
|
82
|
+
[0, 0, 1, -1, 277693],
|
83
|
+
[2, 0, 0, -1, 173237],
|
84
|
+
[2, 0, -1, 1, 55413],
|
85
|
+
[2, 0, -1, -1, 46271],
|
86
|
+
[2, 0, 0, 1, 32573],
|
87
|
+
[0, 0, 2, 1, 17198],
|
88
|
+
[2, 0, 1, -1, 9266],
|
89
|
+
[0, 0, 2, -1, 8822],
|
90
|
+
[2, -1, 0, -1, 8216],
|
91
|
+
[2, 0, -2, -1, 4324],
|
92
|
+
[2, 0, 1, 1, 4200],
|
93
|
+
[2, 1, 0, -1, -3359],
|
94
|
+
[2, -1, -1, 1, 2463],
|
95
|
+
[2, -1, 0, 1, 2211],
|
96
|
+
[2, -1, -1, -1, 2065],
|
97
|
+
[0, 1, -1, -1, -1870],
|
98
|
+
[4, 0, -1, -1, 1828],
|
99
|
+
[0, 1, 0, 1, -1794],
|
100
|
+
[0, 0, 0, 3, -1749],
|
101
|
+
[0, 1, -1, 1, -1565],
|
102
|
+
[1, 0, 0, 1, -1491],
|
103
|
+
[0, 1, 1, 1, -1475],
|
104
|
+
[0, 1, 1, -1, -1410],
|
105
|
+
[0, 1, 0, -1, -1344],
|
106
|
+
[1, 0, 0, -1, -1335],
|
107
|
+
[0, 0, 3, 1, 1107],
|
108
|
+
[4, 0, 0, -1, 1021],
|
109
|
+
[4, 0, -1, 1, 833],
|
110
|
+
[0, 0, 1, -3, 777],
|
111
|
+
[4, 0, -2, 1, 671],
|
112
|
+
[2, 0, 0, -3, 607],
|
113
|
+
[2, 0, 2, -1, 596],
|
114
|
+
[2, -1, 1, -1, 491],
|
115
|
+
[2, 0, -2, 1, -451],
|
116
|
+
[0, 0, 3, -1, 439],
|
117
|
+
[2, 0, 2, 1, 422],
|
118
|
+
[2, 0, -3, -1, 421],
|
119
|
+
[2, 1, -1, 1, -366],
|
120
|
+
[2, 1, 0, 1, -351],
|
121
|
+
[4, 0, 0, 1, 331],
|
122
|
+
[2, -1, 1, 1, 315],
|
123
|
+
[2, -2, 0, -1, 302],
|
124
|
+
[0, 0, 1, 3, -283],
|
125
|
+
[2, 1, 1, -1, -229],
|
126
|
+
[1, 1, 0, -1, 223],
|
127
|
+
[1, 1, 0, 1, 223],
|
128
|
+
[0, 1, -2, -1, -220],
|
129
|
+
[2, 1, -1, -1, -220],
|
130
|
+
[1, 0, 1, 1, -185],
|
131
|
+
[2, -1, -2, -1, 181],
|
132
|
+
[0, 1, 2, 1, -177],
|
133
|
+
[4, 0, -2, -1, 176],
|
134
|
+
[4, -1, -1, -1, 166],
|
135
|
+
[1, 0, 1, -1, -164],
|
136
|
+
[4, 0, 1, -1, 132],
|
137
|
+
[1, 0, -1, -1, -119],
|
138
|
+
[4, -1, 0, -1, 115],
|
139
|
+
[2, -2, 0, 1, 107]
|
140
|
+
]
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|