-
-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Monthly Moon phases #82
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
rhannequin
force-pushed
the
moon-phase-angle-illuminated-fraction
branch
from
May 22, 2024 23:01
360430b
to
da0f5de
Compare
🙌🥇🥳 |
rhannequin
force-pushed
the
moon-phase-angle-illuminated-fraction
branch
from
May 24, 2024 08:38
da0f5de
to
d8410b4
Compare
rhannequin
force-pushed
the
moon-phase-angle-illuminated-fraction
branch
from
May 24, 2024 09:47
d8410b4
to
aca2641
Compare
rhannequin
force-pushed
the
moon-phase-angle-illuminated-fraction
branch
from
May 27, 2024 18:51
aca2641
to
7daf326
Compare
rhannequin
force-pushed
the
moon-phase-angle-illuminated-fraction
branch
from
May 30, 2024 08:51
7daf326
to
bf02e4c
Compare
This change introduces multiple new objects to be able to get all the phase times for a given month. The Moon phases are: New Moon, First Quarter, Full Moon and Last Quarter. Because the average lunar month is approximatively 29.5 days, most of the time there are only one of each phase per month. This also means that in some configuration, it is possible to have only 3 phases in a month, or to have a phase happening twice in a month, giving 5 phases: * February 2012 had only a Full Moon, Last Quarter and New Moon * May 2024 had two Last Quarter For this reason, this change generates an array of unknown length, containing a `Astronoby::MoonPhase` object for each phase happening in the month. The algorithm provided by Jean Meeus report having a mean margin error of 3 seconds, which has been confirmed from a few comparisons with the IMCCE. The new `Astronoby::MoonPhase` object only exposes the `time` and `phase` name of the event. In the future, it could be interesting to add more methods like `#full_moon?` or similar. `Astronoby::Events::MoonPhases` contains all the logic and exposes the final list. This list can also be accessed through `Astronoby::Moon` for ease of use. ```rb moon_phases = Astronoby::Moon.monthly_phase_events(year: 2024, month: 1) moon_phases.first.phase # => :last_quarter moon_phases.first.time # => 2024-01-04 03:30:26 UTC ```
rhannequin
added a commit
that referenced
this pull request
Jun 11, 2024
## 0.5.0 - 2024-06-11 _If you are upgrading: please see [UPGRADING.md]._ [UPGRADING.md]: https://github.com/rhannequin/astronoby/blob/main/UPGRADING.md ### Features * Make `Sun#mean_anomaly` public ([#72]) * Moon ecliptic coordinates ([#73]) * Moon apparent geocentric equatorial coordinates ([#75]) * Moon horizontal coordinates ([#76]) * Assume Moon's equatorial coordinates are geocentric ([#77]) * Use observer object for geocentric parallax ([#79]) * Moon's phase angle and illuminated fraction ([#80]) * Monthly Moon phases ([#82]) * Rationalize negative degree angles ([#83]) * Factorize Moon phases periodic terms ([#85]) * Introduce observation events for Moon ([#86]) [#72]: #72 [#73]: #73 [#75]: #75 [#76]: #76 [#77]: #77 [#79]: #79 [#80]: #80 [#82]: #82 [#83]: #83 [#85]: #85 [#86]: #86 ### Improvements * Create FUNDING.yml ([#70]) * Bump standard from 1.35.1 to 1.36.0 ([#71]) * Bump rexml from 3.2.6 to 3.2.8 ([#74]) * Expand the number of tested Ruby versions ([#84]) * Add Ruby 3.1.6 and 3.3.2 coverage ([#88]) * Improve and update documentation ([#87]) * Update UPGRADING.md ([#89]) [#70]: #70 [#71]: #71 [#74]: #74 [#84]: #84 [#88]: #88 [#87]: #87 [#89]: #89 ### Backward-incompatible changes * Use Observer in Horizontal coordinates ([#69]) * Introduce `Astronoby::Distance` value object ([#78]) [#69]: #69 [#78]: #78 **Full Changelog**: v0.4.0...v0.5.0
rhannequin
added a commit
that referenced
this pull request
Jun 11, 2024
### Features * Make `Sun#mean_anomaly` public ([#72]) * Moon ecliptic coordinates ([#73]) * Moon apparent geocentric equatorial coordinates ([#75]) * Moon horizontal coordinates ([#76]) * Assume Moon's equatorial coordinates are geocentric ([#77]) * Use observer object for geocentric parallax ([#79]) * Moon's phase angle and illuminated fraction ([#80]) * Monthly Moon phases ([#82]) * Rationalize negative degree angles ([#83]) * Factorize Moon phases periodic terms ([#85]) * Introduce observation events for Moon ([#86]) [#72]: #72 [#73]: #73 [#75]: #75 [#76]: #76 [#77]: #77 [#79]: #79 [#80]: #80 [#82]: #82 [#83]: #83 [#85]: #85 [#86]: #86 ### Improvements * Create FUNDING.yml ([#70]) * Bump standard from 1.35.1 to 1.36.0 ([#71]) * Bump rexml from 3.2.6 to 3.2.8 ([#74]) * Expand the number of tested Ruby versions ([#84]) * Add Ruby 3.1.6 and 3.3.2 coverage ([#88]) * Improve and update documentation ([#87]) * Update UPGRADING.md ([#89]) [#70]: #70 [#71]: #71 [#74]: #74 [#84]: #84 [#88]: #88 [#87]: #87 [#89]: #89 ### Backward-incompatible changes * Use Observer in Horizontal coordinates ([#69]) * Introduce `Astronoby::Distance` value object ([#78]) [#69]: #69 [#78]: #78 **Full Changelog**: v0.4.0...v0.5.0
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change introduces multiple new objects to be able to get all the phase times for a given month.
The Moon phases are: New Moon, First Quarter, Full Moon and Last Quarter.
Because the average lunar month is approximatively 29.5 days, most of the time there are only one of each phase per month. This also means that in some configuration, it is possible to have only 3 phases in a month, or to have a phase happening twice in a month, giving 5 phases:
For this reason, this change generates an array of unknown length, containing a
Astronoby::MoonPhase
object for each phase happening in the month.The algorithm provided by Jean Meeus report having a mean margin error of 3 seconds, which has been confirmed from a few comparisons with the IMCCE.
The new
Astronoby::MoonPhase
object only exposes thetime
andphase
name of the event. In the future, it could be interesting to add more methods like#full_moon?
or similar.Astronoby::Events::MoonPhases
contains all the logic and exposes the final list. This list can also be accessed throughAstronoby::Moon
for ease of use.