Skip to content

Geometric and Astrometric reference frames with coordinates#132

Merged
rhannequin merged 1 commit intomainfrom
reference-frames
Feb 19, 2025
Merged

Geometric and Astrometric reference frames with coordinates#132
rhannequin merged 1 commit intomainfrom
reference-frames

Conversation

@rhannequin
Copy link
Owner

This changes Geometric and Astrometric not as Position anymore but as ReferenceFrame.

The terminology is important, Geometric and Astrometric don't really describe only a position by themselves, but a frame where the position is defined.

Now, a ReferenceFrame exposes coordinates, with equatorial coordinates being the first supported kind of coordinates. Ecliptic coordinates will come soon.

A ReferenceFrame still exposes the position, velocity and distance. It makes sense that it is not called a Position anymore as the position is one attribute accessible from the reference frame.

time = Time.utc(2025, 4, 1)
instant = Astronoby::Instant.from_time(time)
ephem = Astronoby::Ephem.load("de440s.bsp")
mars = Astronoby::Mars.new(instant: instant, ephem: ephem)


geometric = mars.geometric

geometric.equatorial.right_ascension.str(:hms)
# => "10h 8m 53.1545s"

geometric.equatorial.declination.str(:dms)
# => "+13° 22′ 23.046″"

geometric.distance.kilometers.round
# => 249308491

geometric.position.map(&:km).map(&:round)
# => Vector[-214596103, 113040908, 57662718]

geometric.velocity.map(&:kmps).map { _1.round(2) }
# => Vector[-11.48, -17.16, -7.56]


astrometric = mars.astrometric

astrometric.equatorial.right_ascension.str(:hms)
# => "7h 42m 19.2644s"

astrometric.equatorial.declination.str(:dms)
# => "+24° 3′ 35.8686″"

astrometric.distance.kilometers.round
# => 170390364

astrometric.position.map(&:km).map(&:round)
# => Vector[-67178482, 140336314, 69466874]

astrometric.velocity.map(&:kmps).map { _1.round(2) }
# => Vector[-16.79, 9.77, 4.11]

This changes `Geometric` and `Astrometric` not as `Position` anymore but
`ReferenceFrame`.

The terminology is important `Geometric` and `Astrometric` don't really
describe a position by themselves, but a frame where the position is
defined.

Now, a `ReferenceFrame` exposes coordinates, with equatorial coordinates
being the first supported kind of coordinates. Ecliptic coordinates will
come soon.

A `ReferenceFrame` still exposes the `position`, `velocity` and
`distance`. It makes sense that it is not called a `Position` anymore as
the `position` is one attribute accessible from the reference frame.
@rhannequin rhannequin self-assigned this Feb 17, 2025
@rhannequin rhannequin merged commit fd36355 into main Feb 19, 2025
34 checks passed
@rhannequin rhannequin deleted the reference-frames branch February 24, 2025 20:11
@rhannequin rhannequin mentioned this pull request Apr 30, 2025
rhannequin added a commit that referenced this pull request May 12, 2025
## 0.7.0 - 2025-05-12

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

### Bug fixes

* Fix Moon monthly phase events calculation by @valeriy-sokoloff in ([#124])

### Features

* Add `Instant` value object ([#121])
* Introduce barycentric position of Solar System major bodies ([#127])
* Introduce Astrometric position for planets ([#129])
* Rename Barycentric into Geometric ([#130])
* Rename IRCF and remove module Position ([#131])
* Geometric and Astrometric reference frames with coordinates ([#132])
* Ecliptic coordinates for Geometric and Astrometric reference frames ([#134])
* Add Geometric and Astrometric positions for `Sun` and `Moon` ([#135])
* Implement new aberration correction ([#136])
* Precession matrix for 2006 P03 model ([#137])
* Introduce `MeanOfDate` reference frame ([#138])
* New nutation model ([#141])
* Light deflection correction ([#142])
* Introduce `Apparent` reference frame ([#143])
* Introduce `Topocentric` reference frame ([#145])
* Improve Vector integration with value objects ([#146])
* Handle refracted topocentric horizontal coordinates ([#147])
* Add `#angular_diameter` to apparent and topocentric reference frames ([#149])
* Introduce new calculator for rising, transit and setting times ([#148])
* Clean code after Ephem refactoring ([#152])
* Improve `RisingTransitSettingEventsCalculator` ([#155])
* Simplify `RisingTransitSettingEventsCalculator` ([#156])
* Lazy-load reference frames ([#157])
* Overall performance improvements ([#163])
* Add support for IMCCE INPOP by @JoelQ and @rhannequin ([#166])
* Update INPOP excerpt in spec data ([#167])
* Introduce a better rise/transit/set calculator ([#168])
* Drop `Astronoby::Observer#observe` ([#174])

### Improvements

* Bump standard from 1.42.1 to 1.49.0 by @dependabot ([#123], [#128], [#150], [#165])
* Bump rubyzip from 2.3.2 to 2.4.1 by @dependabot ([#120])
* Add more tests for Julian Date conversion ([#122])
* Upgrade main Ruby version and supported ones ([#125])
* Update email address and gem description ([#126])
* Increase precision of mean obliquity ([#133])
* Add supported Rubies ([#139])
* Set Ruby 3.4.2 as default version ([#140])
* Fix dependency secutiry patch ([#151])
* Improve HMS/DMS formats ([#153])
* Use excerpts ephemerides for specs of Sun and Moon ([#154])
* Add link to deprecated documentation ([#160])
* Default Ruby 3.4.3 and support recent rubies ([#169])
* Better Moon phases test coverage ([#172])
* Optimize Observer with GMST from Instant ([#173])
* Update README about documentation location ([#175])
* Add GitHub Actions permissions ([#176])

### New Contributors

* @valeriy-sokoloff made their first contribution in #124
* @JoelQ made their first contribution in #166

**Full Changelog**: v0.6.0...v0.7.0

[#120]: #120
[#121]: #121
[#122]: #122
[#123]: #123
[#124]: #124
[#125]: #125
[#126]: #126
[#127]: #127
[#128]: #128
[#129]: #129
[#130]: #130
[#131]: #131
[#132]: #132
[#133]: #133
[#134]: #134
[#135]: #135
[#136]: #136
[#137]: #137
[#138]: #138
[#139]: #139
[#140]: #140
[#141]: #141
[#142]: #142
[#143]: #143
[#145]: #145
[#146]: #146
[#147]: #147
[#148]: #148
[#149]: #149
[#150]: #150
[#151]: #151
[#152]: #152
[#153]: #153
[#154]: #154
[#155]: #155
[#156]: #156
[#157]: #157
[#160]: #160
[#163]: #163
[#165]: #165
[#166]: #166
[#167]: #167
[#168]: #168
[#169]: #169
[#172]: #172
[#173]: #173
[#174]: #174
[#175]: #175
[#176]: #176
[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