Merged
Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR implements apparent magnitude calculations for celestial bodies in the Astronoby library. Apparent magnitude represents the brightness of astronomical objects as observed from Earth.
- Adds apparent magnitude calculation functionality to all solar system bodies
- Implements planet-specific magnitude correction formulas for accurate calculations
- Refactors phase angle computation to support magnitude calculations
Reviewed Changes
Copilot reviewed 21 out of 21 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| lib/astronoby/bodies/solar_system_body.rb | Adds base apparent magnitude implementation and refactors phase angle computation |
| lib/astronoby/bodies/sun.rb | Implements Sun-specific apparent magnitude calculation |
| lib/astronoby/bodies/earth.rb | Updates Earth to exclude magnitude calculations |
| lib/astronoby/bodies/mercury.rb | Adds Mercury's absolute magnitude and correction formula |
| lib/astronoby/bodies/venus.rb | Adds Venus's absolute magnitude and correction formula |
| lib/astronoby/bodies/mars.rb | Adds Mars's absolute magnitude and correction formula |
| lib/astronoby/bodies/jupiter.rb | Adds Jupiter's absolute magnitude and correction formula |
| lib/astronoby/bodies/saturn.rb | Adds Saturn's absolute magnitude and correction formula |
| lib/astronoby/bodies/uranus.rb | Adds Uranus's absolute magnitude |
| lib/astronoby/bodies/neptune.rb | Adds Neptune's absolute magnitude and correction formula |
| lib/astronoby/bodies/moon.rb | Adds Moon's absolute magnitude and correction formula |
| spec/astronoby/bodies/*.rb | Adds comprehensive test coverage for apparent magnitude calculations |
Merged
rhannequin
added a commit
that referenced
this pull request
Sep 1, 2025
## 0.8.0 - 2025-09-01 _If you are upgrading: please see [UPGRADING.md]._ ### Bug fixes * Fix UPGRADING documentation ([#178]) * Fix possible division by zero in RTS ([#185]) ### Features * Introduce performance benchmark ([#183]) * Cache positions in RTS calculator ([#182]) * Internal global LRU cache ([#186]) * Global configuration ([#187]) * Compute the constellation a body is in ([#199]) * Add `#phase_angle` and `#illuminated_fraction` to planets ([#200]) * Apparent magnitude ([#201]) * Add #events_between to TwilightCalculator with better accuracy ([#204]) * `#angular_diameter` on Solar System bodies ([#207]) * Fix constellation boundaries near 24h right ascension ([#209]) ### Improvements * Bump standard from 1.49.0 to 1.50.0 by @dependabot ([#177]) * Bump ephem from 0.3.0 to 0.4.1 by @dependabot ([#181], [#191]) * Bump irb from 1.14.3 to 1.15.2 by @dependabot ([#184]) * Bump rspec from 3.13.0 to 3.13.1 by @dependabot ([#188]) * Bump benchmark from 0.4.0 to 0.4.1 by @dependabot ([#189]) * Bump rake from 13.2.1 to 13.3.0 by @dependabot ([#190]) * Bump matrix from 0.4.2 to 0.4.3 by @dependabot ([#193]) * Update rubyzip requirement from ~> 2.3 to ~> 3.0 by @dependabot ([#194]) * Bump rubyzip from 3.0.0 to 3.0.2 by @dependabot ([#202], [#206]) * Exclude benchmarks from release ([#196]) * `Epoch` refactoring into `JulianDate` ([#197]) * Support Ruby 3.4.4 ([#198]) * Bump actions/checkout from 4 to 5 ([#203]) * Internal documentation ([#205]) ### Backward-incompatible changes * `Epoch` refactoring into `JulianDate` ([#197]) * `#angular_diameter` on Solar System bodies ([#207]) * Rename "epoch" ([#208]) ### Closed issues * Consider adding typical usage/deployment info ([#179]) * Performance degradation in v0.7 ([#180]) **Full Changelog**: v0.7.0...v0.8.0 [#177]: #177 [#178]: #178 [#179]: #179 [#180]: #180 [#181]: #181 [#182]: #182 [#183]: #183 [#184]: #184 [#185]: #185 [#186]: #186 [#187]: #187 [#188]: #188 [#189]: #189 [#190]: #190 [#191]: #191 [#193]: #193 [#194]: #194 [#196]: #196 [#197]: #197 [#198]: #198 [#199]: #199 [#200]: #200 [#201]: #201 [#202]: #202 [#203]: #203 [#204]: #204 [#205]: #205 [#206]: #206 [#207]: #207 [#208]: #208 [#209]: #209 [UPGRADING.md]: https://github.com/rhannequin/astronoby/blob/main/UPGRADING.md
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.
Magnitude is a measure of the luminosity. The more luminous an object, the lower its magnitude number.
The apparent magnitude represents the brightness of the object seen from Earth. Note that is doesn't account the atmospheric effect.
Most planets have many different coefficients. It is because there is no single formula for describing the brightness of all the variety of the planets.
Note that some cases are ignored and fall back to a default (less accurate) formula:
Values have been tested against the IMCCE, JPL Horizons, Stellarium and Skyfield library. They match these sources most of the time, otherwise the difference is too small to be noticed in any amateur purpose.
Since
phase_anglehas been added to planets, the position of the Sun in different reference frames is necessary for multiple planetary calculations. Therefore, the whole sun object is now saved on the planet for computing different data.