Skip to content

Add #approaching_primary? and #receding_from_primary? to solar system bodies#211

Merged
rhannequin merged 2 commits intomainfrom
approaching-receding-primary
Sep 11, 2025
Merged

Add #approaching_primary? and #receding_from_primary? to solar system bodies#211
rhannequin merged 2 commits intomainfrom
approaching-receding-primary

Conversation

@rhannequin
Copy link
Owner

@rhannequin rhannequin commented Sep 9, 2025

Except the Sun, all solar system bodies supported by Astronoby have an elliptical orbit around their primary body (Sun for planets, Earth for the Moon). This means these bodies are constantly approaching or receding from their primary body, except at the exact moments of apoapsis and periapsis.

This change introduces #approaching_primary? and #receding_from_primary? for getting this information. It is also an introduction for computing apoapsis and periapsis events, which are coming soon. 🎉

# Earth apoapsis (aphelion): 2025-07-03T19:54:43

ephem = Astronoby::Ephem.load("inpop19a.bsp")

time = Time.utc(2025, 7, 3, 19, 54, 42)
instant = Astronoby::Instant.from_time(time)
earth = Astronoby::Earth.new(ephem:, instant: instant)

earth.approaching_primary?
# => false

earth.receding_from_primary?
# => true

time = Time.utc(2025, 7, 3, 19, 55)
instant = Astronoby::Instant.from_time(time)
earth = Astronoby::Earth.new(ephem:, instant: instant)

earth.approaching_primary?
# => true

earth.receding_from_primary?
# => false

@rhannequin rhannequin self-assigned this Sep 9, 2025
@rhannequin rhannequin merged commit 633dd38 into main Sep 11, 2025
43 checks passed
@rhannequin rhannequin deleted the approaching-receding-primary branch September 11, 2025 10:10
@rhannequin rhannequin mentioned this pull request Oct 25, 2025
rhannequin added a commit that referenced this pull request Oct 31, 2025
## 0.9.0 - 2025-10-31

_If you are upgrading: please see [UPGRADING.md]._

### Features

* Add `#approaching_primary?` and `#receding_from_primary?` to solar system bodies ([#211])
* Calculate apoapsis and periapsis events ([#213])
* Improve precision of ΔT ([#219])
* Deep Sky Object: Compute astrometric position ([#217])
* Deep Sky Object: Compute apparent position ([#220])
* Deep Sky Object: Handle velocities properly ([#222])
* Deep Sky Object: Compute topocentric position ([#226])
* Deep Sky Object: difference between the body and the position ([#227])
* Deep Sky Object: Add support for RiseTransitSetCalculator ([#228])

### Improvements

* Drop `Astronoby::Apparent#angular_diameter` ([#221])
* Bump rubyzip from 3.0.2 to 3.2.1 by @dependabot ([#210], [#215], [#223], [#233])
* Bump standard from 1.50.0 to 1.51.1 by @dependabot ([#212], [#214])
* Be proud about the precision achieved ([#218])
* Use local apparent instead of local mean sidereal time for hour angle ([#225])
* Bump rspec from 3.13.1 to 3.13.2 by @dependabot ([#229])
* Bump benchmark from 0.4.1 to 0.5.0 by @dependabot ([#230])
* Add documentation for deep-sky objects ([#232])
* Bump rake from 13.3.0 to 13.3.1 by @dependabot ([#235])

### Backward-incompatible changes

* Drop `Astronoby::Apparent#angular_diameter` ([#221])
* Use local apparent instead of local mean sidereal time for hour angle ([#225])

**Full Changelog**: v0.8.0...v0.9.0

[#210]: #210
[#211]: #211
[#212]: #212
[#213]: #213
[#214]: #214
[#215]: #215
[#217]: #217
[#218]: #218
[#219]: #219
[#220]: #220
[#221]: #221
[#222]: #222
[#223]: #223
[#225]: #225
[#226]: #226
[#227]: #227
[#228]: #228
[#229]: #229
[#230]: #230
[#232]: #232
[#233]: #233
[#235]: #235
[UPGRADING.md]: https://github.com/rhannequin/astronoby/blob/main/UPGRADING.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant