Skip to content

Introduce Apparent reference frame#143

Merged
rhannequin merged 1 commit intomainfrom
apparent-position
Mar 4, 2025
Merged

Introduce Apparent reference frame#143
rhannequin merged 1 commit intomainfrom
apparent-position

Conversation

@rhannequin
Copy link
Owner

The apparent coordinates of the date are related to the true ecliptic or equator and the true equinox of the date. They give the direction of the celestial body as it would be seen by an observer located at the Earth’s centre or surface. They take into account the light-time between the celestial body and the observer, the deflection of the light, the stellar aberration (combination of the annual and diurnal aberrations), the precession motions and the nutation of the Earth’s rotation axis.

It is worth mentioning a few design decisions for Astronoby:

  • Apparent position are geocentric, or seen as from the center of mass of the Earth
  • deflection is ignored as so far the first tests have shown its effect was negligible, while computing it complexifies the algorithm

Like Geometric, Astrometry and MeanOfDate, the Apparent reference frame offers equatorial and ecliptic coordinates, among with the Cartesian position and velocity, and the distance to the Earth's center.

Note also that apparent distance doesn't really make sense, prefer using distance from the astrometric reference frame.

instant = Astronoby::Instant.from_time(Time.utc(2025, 2, 7))
ephem = Astronoby::Ephem.load("de440s.bsp")

sun = Astronoby::Sun.new(instant: instant, ephem: ephem)

sun.apparent.position.map(&:km).map(&:round)
# => Vector[110427606, -89775017, -38920555]

sun.apparent.velocity.map(&:kmpd).map(&:round)
# => Vector[1747557, 1776895, 770388]

sun.apparent.equatorial.right_ascension.str(:hms)
# => "21h 23m 33.5303s"

sun.apparent.equatorial.declination.str(:dms)
# => "-15° 17′ 42.9233″"

sun.apparent.ecliptic.latitude.str(:dms)
# => "-0° 0′ 5.6727″"

sun.apparent.ecliptic.longitude.str(:dms)
# => "+318° 27′ 22.3332″"

sun.apparent.distance.km.round
# => 147541924

@rhannequin rhannequin self-assigned this Mar 2, 2025
@rhannequin rhannequin merged commit 68b75d6 into main Mar 4, 2025
37 checks passed
@rhannequin rhannequin deleted the apparent-position branch March 25, 2025 14: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