Introduce Astronoby::Distance value object#78
Merged
rhannequin merged 4 commits intomainfrom May 27, 2024
Merged
Conversation
75351e2 to
4b26a33
Compare
2ec2670 to
5c2ad4e
Compare
4b26a33 to
c4b1617
Compare
5c2ad4e to
490d264
Compare
c4b1617 to
652a7c3
Compare
490d264 to
500db51
Compare
652a7c3 to
1f703bd
Compare
1f703bd to
2326b31
Compare
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
This file contains hidden or 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
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.
Distances are used in the library here and there. To deal with different units, conversion used to be calculated in the logic itself.
This introduces a new value object for handling distances:
Astronoby::Distance.It can be initialized with meters, kilometers and astronomical units, while the distance is always stored in meters, the international unit for distances.
As a regular value object, it is immutable, handles comparison with other
Astronoby::Distanceobjects, and can be used in some arithmetic operations with the+or-operators.In the library, all distance notions have been converted to this new value object, with significant breaking changes:
Astronoby::Observer#elevationis now aAstronoby::DistanceAstronoby::GeocentricParallax::anglenow requires aAstronoby::DistanceAstronoby::GeocentricParallax::for_equatorial_coordinatesas well forelevationanddistanceAstronoby::Moon#distancenow returns aAstronoby::DistancePrecision
Because distances are stored in meters, floating points rounding errors are quite likely. For now, I don't think this is a problem. But if we start to see it is one, we'll have to introduce
BigDecimalagain.