astronoby 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/CHANGELOG.md +159 -0
- data/README.md +12 -5
- data/UPGRADING.md +109 -0
- data/docs/README.md +109 -16
- data/docs/angles.md +2 -1
- data/docs/configuration.md +20 -17
- data/docs/coordinates.md +73 -13
- data/docs/deep_sky_bodies.md +101 -0
- data/docs/ephem.md +6 -3
- data/docs/equinoxes_solstices_times.md +4 -3
- data/docs/glossary.md +97 -1
- data/docs/iers.md +40 -0
- data/docs/instant.md +21 -16
- data/docs/lunar_eclipses.md +93 -0
- data/docs/lunar_observation.md +87 -0
- data/docs/moon_phases.md +5 -2
- data/docs/observer.md +21 -7
- data/docs/planetary_phenomena.md +78 -0
- data/docs/reference_frames.md +193 -35
- data/docs/rise_transit_set_times.md +10 -8
- data/docs/{celestial_bodies.md → solar_system_bodies.md} +27 -5
- data/docs/twilight_times.md +25 -21
- data/lib/astronoby/angle.rb +69 -4
- data/lib/astronoby/angles/dms.rb +18 -1
- data/lib/astronoby/angles/hms.rb +14 -1
- data/lib/astronoby/angular_velocity.rb +97 -0
- data/lib/astronoby/bodies/deep_sky_object.rb +49 -0
- data/lib/astronoby/bodies/deep_sky_object_position.rb +142 -0
- data/lib/astronoby/bodies/earth.rb +9 -42
- data/lib/astronoby/bodies/jupiter.rb +10 -0
- data/lib/astronoby/bodies/mars.rb +10 -0
- data/lib/astronoby/bodies/mercury.rb +10 -0
- data/lib/astronoby/bodies/moon.rb +162 -15
- data/lib/astronoby/bodies/neptune.rb +10 -0
- data/lib/astronoby/bodies/saturn.rb +10 -0
- data/lib/astronoby/bodies/solar_system_body.rb +257 -53
- data/lib/astronoby/bodies/sun.rb +79 -4
- data/lib/astronoby/bodies/uranus.rb +10 -0
- data/lib/astronoby/bodies/venus.rb +10 -0
- data/lib/astronoby/body.rb +6 -0
- data/lib/astronoby/cache.rb +1 -0
- data/lib/astronoby/center.rb +84 -0
- data/lib/astronoby/constants.rb +7 -2
- data/lib/astronoby/constellation.rb +9 -1
- data/lib/astronoby/coordinates/ecliptic.rb +10 -1
- data/lib/astronoby/coordinates/equatorial.rb +66 -13
- data/lib/astronoby/coordinates/geodetic.rb +102 -0
- data/lib/astronoby/coordinates/horizontal.rb +13 -1
- data/lib/astronoby/distance.rb +41 -0
- data/lib/astronoby/duration.rb +116 -0
- data/lib/astronoby/earth_rotation.rb +70 -0
- data/lib/astronoby/equinox_solstice.rb +31 -8
- data/lib/astronoby/errors.rb +11 -0
- data/lib/astronoby/events/conjunction.rb +51 -0
- data/lib/astronoby/events/conjunction_opposition_calculator.rb +84 -0
- data/lib/astronoby/events/eclipse_phase.rb +27 -0
- data/lib/astronoby/events/extremum_calculator.rb +80 -0
- data/lib/astronoby/events/extremum_event.rb +15 -0
- data/lib/astronoby/events/greatest_elongation.rb +58 -0
- data/lib/astronoby/events/greatest_elongation_calculator.rb +56 -0
- data/lib/astronoby/events/lunar_eclipse.rb +99 -0
- data/lib/astronoby/events/lunar_eclipse_calculator.rb +285 -0
- data/lib/astronoby/events/opposition.rb +19 -0
- data/lib/astronoby/events/rise_transit_set_calculator.rb +9 -6
- data/lib/astronoby/events/rise_transit_set_event.rb +12 -1
- data/lib/astronoby/events/rise_transit_set_events.rb +12 -1
- data/lib/astronoby/events/twilight_calculator.rb +1 -1
- data/lib/astronoby/events/twilight_event.rb +24 -6
- data/lib/astronoby/events/twilight_events.rb +26 -6
- data/lib/astronoby/extremum_finder.rb +148 -0
- data/lib/astronoby/instant.rb +35 -9
- data/lib/astronoby/libration.rb +25 -0
- data/lib/astronoby/mean_obliquity.rb +8 -0
- data/lib/astronoby/moon_orientation_ephemeris.rb +69 -0
- data/lib/astronoby/moon_physical_ephemeris.rb +263 -0
- data/lib/astronoby/nutation.rb +10 -20
- data/lib/astronoby/observer.rb +67 -49
- data/lib/astronoby/orientation.rb +107 -0
- data/lib/astronoby/position.rb +16 -0
- data/lib/astronoby/precession.rb +61 -60
- data/lib/astronoby/reference_frame.rb +73 -7
- data/lib/astronoby/reference_frames/apparent.rb +25 -16
- data/lib/astronoby/reference_frames/astrometric.rb +14 -1
- data/lib/astronoby/reference_frames/geometric.rb +7 -1
- data/lib/astronoby/reference_frames/mean_of_date.rb +13 -1
- data/lib/astronoby/reference_frames/teme.rb +153 -0
- data/lib/astronoby/reference_frames/topocentric.rb +31 -5
- data/lib/astronoby/refraction.rb +26 -5
- data/lib/astronoby/root_finder.rb +83 -0
- data/lib/astronoby/rotation.rb +49 -0
- data/lib/astronoby/stellar_propagation.rb +162 -0
- data/lib/astronoby/time/greenwich_apparent_sidereal_time.rb +31 -0
- data/lib/astronoby/time/greenwich_mean_sidereal_time.rb +101 -0
- data/lib/astronoby/time/greenwich_sidereal_time.rb +41 -58
- data/lib/astronoby/time/local_apparent_sidereal_time.rb +63 -0
- data/lib/astronoby/time/local_mean_sidereal_time.rb +63 -0
- data/lib/astronoby/time/local_sidereal_time.rb +59 -26
- data/lib/astronoby/time/sidereal_time.rb +64 -0
- data/lib/astronoby/true_obliquity.rb +4 -0
- data/lib/astronoby/util/maths.rb +8 -0
- data/lib/astronoby/util/time.rb +10 -467
- data/lib/astronoby/vector.rb +10 -0
- data/lib/astronoby/velocity.rb +44 -0
- data/lib/astronoby/version.rb +1 -1
- data/lib/astronoby.rb +33 -0
- metadata +58 -6
data/docs/coordinates.md
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
# Coordinates
|
|
2
2
|
|
|
3
|
-
Astronoby provides
|
|
3
|
+
Astronoby provides four types of coordinates:
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
- Equatorial
|
|
6
|
+
- Ecliptic
|
|
7
|
+
- Horizontal
|
|
8
|
+
- Geodetic
|
|
8
9
|
|
|
9
10
|
Equatorial and ecliptic coordinates are available for each [reference frame],
|
|
10
|
-
|
|
11
|
+
horizontal coordinates are only available for a topocentric position, and
|
|
12
|
+
geodetic coordinates are used for Earth-surface positions (ECEF ↔ WGS-84).
|
|
11
13
|
|
|
12
14
|
## Equatorial
|
|
13
15
|
|
|
@@ -36,7 +38,7 @@ saturn = Astronoby::Saturn.new(ephem: ephem, instant: instant)
|
|
|
36
38
|
equatorial = saturn.apparent.equatorial
|
|
37
39
|
|
|
38
40
|
equatorial.right_ascension.str(:hms)
|
|
39
|
-
# => "20h 45m 2.
|
|
41
|
+
# => "20h 45m 2.6681s"
|
|
40
42
|
```
|
|
41
43
|
|
|
42
44
|
You can learn more about angles on the [Angle page].
|
|
@@ -49,7 +51,7 @@ is at -90°.
|
|
|
49
51
|
|
|
50
52
|
```rb
|
|
51
53
|
equatorial.declination.str(:dms)
|
|
52
|
-
# => "-18° 46′ 16.
|
|
54
|
+
# => "-18° 46′ 16.0931″"
|
|
53
55
|
```
|
|
54
56
|
|
|
55
57
|
### Hour angle
|
|
@@ -63,7 +65,7 @@ time. By convention, the hour angle is usually displayed in hours.
|
|
|
63
65
|
longitude = Astronoby::Angle.from_degrees(2)
|
|
64
66
|
|
|
65
67
|
equatorial.compute_hour_angle(longitude: longitude, time: time).str(:hms)
|
|
66
|
-
# => "23h 27m 54.
|
|
68
|
+
# => "23h 27m 54.1924s"
|
|
67
69
|
```
|
|
68
70
|
|
|
69
71
|
## Ecliptic
|
|
@@ -101,7 +103,7 @@ saturn = Astronoby::Saturn.new(ephem: ephem, instant: instant)
|
|
|
101
103
|
ecliptic = saturn.apparent.ecliptic
|
|
102
104
|
|
|
103
105
|
ecliptic.latitude.str(:dms)
|
|
104
|
-
# => "-0° 41′ 27.
|
|
106
|
+
# => "-0° 41′ 27.5077″"
|
|
105
107
|
```
|
|
106
108
|
|
|
107
109
|
### Longitude
|
|
@@ -111,7 +113,7 @@ ecliptic towards the north (positive) or south (negative) ecliptic pole.
|
|
|
111
113
|
|
|
112
114
|
```rb
|
|
113
115
|
ecliptic.longitude.str(:dms)
|
|
114
|
-
# => "+308° 38′ 33.
|
|
116
|
+
# => "+308° 38′ 33.1535″"
|
|
115
117
|
```
|
|
116
118
|
|
|
117
119
|
## Horizontal
|
|
@@ -142,7 +144,7 @@ saturn = Astronoby::Saturn.new(ephem: ephem, instant: instant)
|
|
|
142
144
|
horizontal = saturn.observed_by(observer).horizontal
|
|
143
145
|
|
|
144
146
|
horizontal.altitude.str(:dms)
|
|
145
|
-
# => "+28° 46′
|
|
147
|
+
# => "+28° 46′ 38.3398″"
|
|
146
148
|
```
|
|
147
149
|
|
|
148
150
|
### Azimuth
|
|
@@ -152,16 +154,74 @@ eastward.
|
|
|
152
154
|
|
|
153
155
|
```rb
|
|
154
156
|
horizontal.azimuth.str(:dms)
|
|
155
|
-
# => "+171° 19′
|
|
157
|
+
# => "+171° 19′ 38.2567″"
|
|
156
158
|
```
|
|
157
159
|
|
|
160
|
+
## Geodetic
|
|
161
|
+
|
|
162
|
+
Geodetic coordinates describe a position on or above the Earth's surface using
|
|
163
|
+
the [WGS-84] reference ellipsoid, the same system used by GPS. They have three
|
|
164
|
+
attributes:
|
|
165
|
+
|
|
166
|
+
### Latitude
|
|
167
|
+
|
|
168
|
+
The angle from the equator to the point on the ellipsoid surface, from +90°
|
|
169
|
+
(North Pole) to -90° (South Pole).
|
|
170
|
+
|
|
171
|
+
### Longitude
|
|
172
|
+
|
|
173
|
+
The angle from the Greenwich meridian, from +180° to -180°, with positive
|
|
174
|
+
angles eastward.
|
|
175
|
+
|
|
176
|
+
### Elevation
|
|
177
|
+
|
|
178
|
+
The distance above (or below) the WGS-84 ellipsoid surface.
|
|
179
|
+
|
|
180
|
+
### From ECEF
|
|
181
|
+
|
|
182
|
+
Geodetic coordinates can be derived from Earth-Centered Earth-Fixed (ECEF)
|
|
183
|
+
Cartesian coordinates using `Astronoby::Coordinates::Geodetic.from_ecef`. This
|
|
184
|
+
is particularly useful for satellite tracking, where a propagator produces ECEF
|
|
185
|
+
positions via `Astronoby::Teme#to_ecef`:
|
|
186
|
+
|
|
187
|
+
```rb
|
|
188
|
+
teme = Astronoby::Teme.new(
|
|
189
|
+
position: Astronoby::Distance.vector_from_meters(
|
|
190
|
+
[5_094_180.16, 6_127_644.66, 6_380_344.53]
|
|
191
|
+
),
|
|
192
|
+
velocity: Astronoby::Velocity.vector_from_mps(
|
|
193
|
+
[-4746.13, 785.82, 5531.93]
|
|
194
|
+
),
|
|
195
|
+
instant: instant
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
geodetic = teme.to_ecef.geodetic
|
|
199
|
+
|
|
200
|
+
geodetic.latitude.str(:dms)
|
|
201
|
+
# => "+38° 48′ 3.3038″"
|
|
202
|
+
|
|
203
|
+
geodetic.longitude.str(:dms)
|
|
204
|
+
# => "+97° 27′ 6.7374″"
|
|
205
|
+
|
|
206
|
+
geodetic.elevation.km.round
|
|
207
|
+
# => 3838
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
The conversion uses Bowring's iterative method, which converges in 2-3
|
|
211
|
+
iterations for typical satellite altitudes.
|
|
212
|
+
|
|
213
|
+
The forward direction (geodetic → ECEF) is handled by
|
|
214
|
+
[`Astronoby::Observer#geocentric_position`][Observer page].
|
|
215
|
+
|
|
216
|
+
[WGS-84]: https://en.wikipedia.org/wiki/World_Geodetic_System
|
|
158
217
|
[reference frame]: reference_frames.md
|
|
159
218
|
[Wikipedia]: https://en.wikipedia.org/wiki/Equatorial_coordinate_system
|
|
160
219
|
[Angle page]: angles.md
|
|
161
220
|
[topocentric position]: reference_frames.md#topocentric
|
|
162
221
|
|
|
163
222
|
## See also
|
|
223
|
+
|
|
164
224
|
- [Reference Frames](reference_frames.md) - for coordinate system details
|
|
165
225
|
- [Angles](angles.md) - for working with angular measurements
|
|
166
226
|
- [Observer](observer.md) - for location setup
|
|
167
|
-
- [
|
|
227
|
+
- [Solar System Bodies](solar_system_bodies.md) - for object positions
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Deep-sky Bodies
|
|
2
|
+
|
|
3
|
+
Deep-sky objects represent celestial object that are not part of the Solar
|
|
4
|
+
System, like stars, nebulae, clusters, galaxies. They are not affected by any
|
|
5
|
+
body of the Solar System.
|
|
6
|
+
|
|
7
|
+
Because we know billions of there objects, it is impossible for Astronoby to
|
|
8
|
+
store a comprehensive catalogue. Therefore, it is up to the developer to build
|
|
9
|
+
the object they need, based on equatorial coordinates from official catalogues
|
|
10
|
+
at J2000 epoch. The [SIMBAD Astronomical Database] is an example of database
|
|
11
|
+
where such coordinates can be found.
|
|
12
|
+
|
|
13
|
+
Astronoby makes the difference between the body and the position.
|
|
14
|
+
`Astronoby::DeepSkyObject` represent the body in itself, defined by fixed
|
|
15
|
+
coordinates. It can also be support proper motion parameters, also given from
|
|
16
|
+
official catalogues, which provides a bit more precision.
|
|
17
|
+
|
|
18
|
+
```rb
|
|
19
|
+
vega_j2000 = Astronoby::Coordinates::Equatorial.new(
|
|
20
|
+
right_ascension: Astronoby::Angle.from_hms(18, 36, 56.33635),
|
|
21
|
+
declination: Astronoby::Angle.from_dms(38, 47, 1.2802),
|
|
22
|
+
epoch: Astronoby::JulianDate::J2000
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
vega = Astronoby::DeepSkyObject.new(equatorial_coordinates: vega_j2000)
|
|
26
|
+
|
|
27
|
+
vega_with_proper_motion = Astronoby::DeepSkyObject.new(
|
|
28
|
+
equatorial_coordinates: vega_j2000,
|
|
29
|
+
proper_motion_ra: Astronoby::AngularVelocity
|
|
30
|
+
.from_milliarcseconds_per_year(200.94),
|
|
31
|
+
proper_motion_dec: Astronoby::AngularVelocity
|
|
32
|
+
.from_milliarcseconds_per_year(286.23),
|
|
33
|
+
parallax: Astronoby::Angle.from_degree_arcseconds(130.23 / 1000.0),
|
|
34
|
+
radial_velocity: Astronoby::Velocity.from_kilometers_per_second(-13.5)
|
|
35
|
+
)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
From a `DeepSkyObject` instance, it is possible to instantiate the position
|
|
39
|
+
of the body at a given instant. If given the optional `ephem` parameter,
|
|
40
|
+
precision will increase as some astronomical corrections will be
|
|
41
|
+
applied.
|
|
42
|
+
|
|
43
|
+
A `DeepSkyPosition` object exposes `astrometric`, `apparent` and `topocentric`
|
|
44
|
+
reference frames.
|
|
45
|
+
|
|
46
|
+
```rb
|
|
47
|
+
time = Time.utc(2025, 10, 1)
|
|
48
|
+
instant = Astronoby::Instant.from_time(time)
|
|
49
|
+
|
|
50
|
+
ephem = Astronoby::Ephem.load("inpop19a.bsp")
|
|
51
|
+
|
|
52
|
+
vega
|
|
53
|
+
.at(instant)
|
|
54
|
+
.apparent
|
|
55
|
+
.equatorial
|
|
56
|
+
.right_ascension
|
|
57
|
+
.str(:hms)
|
|
58
|
+
# => "18h 37m 48.2804s"
|
|
59
|
+
|
|
60
|
+
vega_with_proper_motion
|
|
61
|
+
.at(instant, ephem: ephem)
|
|
62
|
+
.apparent
|
|
63
|
+
.equatorial
|
|
64
|
+
.right_ascension
|
|
65
|
+
.str(:hms)
|
|
66
|
+
# => "18h 37m 48.706s"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
You can learn more about [ephemerides] and [reference frames].
|
|
70
|
+
|
|
71
|
+
A deep-sky body object can also be used in calculators.
|
|
72
|
+
|
|
73
|
+
```rb
|
|
74
|
+
observer = Astronoby::Observer.new(
|
|
75
|
+
latitude: Astronoby::Angle.from_degrees(51.5072),
|
|
76
|
+
longitude: Astronoby::Angle.from_degrees(-0.1276)
|
|
77
|
+
)
|
|
78
|
+
date = Date.new(2025, 10, 1)
|
|
79
|
+
|
|
80
|
+
body = Astronoby::DeepSkyObject.new(
|
|
81
|
+
equatorial_coordinates: Astronoby::Coordinates::Equatorial.new(
|
|
82
|
+
right_ascension: Astronoby::Angle.from_hms(6, 45, 8.917),
|
|
83
|
+
declination: Astronoby::Angle.from_dms(-16, 42, 58.02)
|
|
84
|
+
)
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
calculator = Astronoby::RiseTransitSetCalculator.new(
|
|
88
|
+
body: body,
|
|
89
|
+
observer: observer,
|
|
90
|
+
ephem: ephem
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
event = calculator.event_on(date)
|
|
94
|
+
|
|
95
|
+
event.rising_time
|
|
96
|
+
# => 2025-10-01 01:31:25 UTC
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
[ephemerides]: ephem.md
|
|
100
|
+
[reference frames]: reference_frames.md
|
|
101
|
+
[SIMBAD Astronomical Database]: https://simbad.u-strasbg.fr/simbad/
|
data/docs/ephem.md
CHANGED
|
@@ -17,8 +17,9 @@ providing the filename.
|
|
|
17
17
|
### Manually
|
|
18
18
|
|
|
19
19
|
Ephemerides are available for download from:
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
|
|
21
|
+
- the JPL public FTP interface: https://ssd.jpl.nasa.gov/ftp/eph/planets/bsp/
|
|
22
|
+
- the INPOP releases page of the IMCCE: https://www.imcce.fr/inpop
|
|
22
23
|
|
|
23
24
|
You can download any `.bsp` file. For the moment, Astronoby only supports the
|
|
24
25
|
planets of the Solar System, and the Sun and the Moon, so you need to
|
|
@@ -48,6 +49,7 @@ ephem = Astronoby::Ephem.load("tmp/de421.bsp")
|
|
|
48
49
|
|
|
49
50
|
JPL produces many different kernels over the years, with different accuracy and
|
|
50
51
|
ranges of supported years. Here are some that we recommend to begin with:
|
|
52
|
+
|
|
51
53
|
- `de421.bsp`: from 1900 to 2050, 17 MB
|
|
52
54
|
- `de440s.bsp`: from 1849 to 2150, 32 MB
|
|
53
55
|
- `inpop19a.bsp`: from 1900 to 2100, 22 MB
|
|
@@ -79,7 +81,8 @@ the target `399`.
|
|
|
79
81
|
[IMCCE]: https://www.imcce.fr
|
|
80
82
|
|
|
81
83
|
## See also
|
|
82
|
-
|
|
84
|
+
|
|
85
|
+
- [Solar System Bodies](solar_system_bodies.md) - for using ephemeris data
|
|
83
86
|
- [Reference Frames](reference_frames.md) - for coordinate calculations
|
|
84
87
|
- [Observer](observer.md) - for location-based calculations
|
|
85
88
|
- [Configuration](configuration.md) - for performance tuning
|
|
@@ -15,16 +15,17 @@ Astronoby::EquinoxSolstice.march_equinox(2025, ephem)
|
|
|
15
15
|
# => 2025-03-20 09:01:29 UTC
|
|
16
16
|
|
|
17
17
|
Astronoby::EquinoxSolstice.june_solstice(2025, ephem)
|
|
18
|
-
# => 2025-06-21 02:42:
|
|
18
|
+
# => 2025-06-21 02:42:16 UTC
|
|
19
19
|
|
|
20
20
|
Astronoby::EquinoxSolstice.september_equinox(2025, ephem)
|
|
21
|
-
# => 2025-09-22 18:19:
|
|
21
|
+
# => 2025-09-22 18:19:21 UTC
|
|
22
22
|
|
|
23
23
|
Astronoby::EquinoxSolstice.december_solstice(2025, ephem)
|
|
24
|
-
# => 2025-12-21 15:03:
|
|
24
|
+
# => 2025-12-21 15:03:05 UTC
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
## See also
|
|
28
|
+
|
|
28
29
|
- [Twilight Times](twilight_times.md) - for seasonal sun events
|
|
29
30
|
- [Moon Phases](moon_phases.md) - for lunar events
|
|
30
31
|
- [Ephemerides](ephem.md) - for data sources
|
data/docs/glossary.md
CHANGED
|
@@ -5,130 +5,223 @@ This glossary defines key astronomical and technical terms used throughout the A
|
|
|
5
5
|
## Astronomical Terms
|
|
6
6
|
|
|
7
7
|
### **Aberration**
|
|
8
|
+
|
|
8
9
|
The apparent displacement of a celestial object due to the finite speed of light and the motion of the observer. In Astronoby, this is automatically corrected in apparent reference frames.
|
|
9
10
|
|
|
10
11
|
### **Altitude**
|
|
12
|
+
|
|
11
13
|
The angular distance of a celestial object above the observer's local horizon, measured in degrees from 0° (horizon) to 90° (zenith).
|
|
12
14
|
|
|
13
15
|
### **Apparent Position**
|
|
16
|
+
|
|
14
17
|
The position of a celestial object as it appears in the sky, corrected for light-time, aberration, and other effects. This is what you actually see when looking through a telescope.
|
|
15
18
|
|
|
16
19
|
### **Arc Second**
|
|
20
|
+
|
|
17
21
|
A unit of angular measurement equal to 1/3600th of a degree. Often used to describe the precision of astronomical calculations.
|
|
18
22
|
|
|
19
23
|
### **Azimuth**
|
|
24
|
+
|
|
20
25
|
The angular distance around the horizon from north, measured clockwise in degrees. North is 0°, east is 90°, south is 180°, and west is 270°.
|
|
21
26
|
|
|
22
27
|
### **Barycentre**
|
|
28
|
+
|
|
23
29
|
The centre of mass of a system of bodies. In the Solar System, this is the point around which all planets orbit, which is usually close to but not exactly at the Sun's centre.
|
|
24
30
|
|
|
25
31
|
### **Celestial Equator**
|
|
32
|
+
|
|
26
33
|
The projection of Earth's equator onto the celestial sphere. It's the reference plane for equatorial coordinates.
|
|
27
34
|
|
|
28
35
|
### **Celestial Sphere**
|
|
36
|
+
|
|
29
37
|
An imaginary sphere surrounding Earth, on which all celestial objects appear to be located. Used as a reference system for astronomical coordinates.
|
|
30
38
|
|
|
31
39
|
### **Constellation**
|
|
40
|
+
|
|
32
41
|
A region of the sky containing a group of stars that form a recognizable pattern. Astronoby can determine which constellation a celestial body appears to be in.
|
|
33
42
|
|
|
34
43
|
### **Declination**
|
|
44
|
+
|
|
35
45
|
The angular distance north or south of the celestial equator, measured in degrees. Positive values are north, negative values are south.
|
|
36
46
|
|
|
37
47
|
### **Ecliptic**
|
|
48
|
+
|
|
38
49
|
The apparent path of the Sun across the celestial sphere throughout the year. It's the plane of Earth's orbit around the Sun.
|
|
39
50
|
|
|
40
51
|
### **Ephemeris**
|
|
52
|
+
|
|
41
53
|
A table or file containing the calculated positions of celestial objects at specific times. Astronoby uses ephemeris files from JPL and IMCCE for high-precision calculations.
|
|
42
54
|
|
|
43
55
|
### **Equinox**
|
|
56
|
+
|
|
44
57
|
The two times each year when the Sun crosses the celestial equator, making day and night approximately equal in length. The March (vernal) and September (autumnal) equinoxes.
|
|
45
58
|
|
|
46
59
|
### **Geocentric**
|
|
60
|
+
|
|
47
61
|
As seen from the centre of Earth. Geocentric coordinates are useful for calculations but don't account for an observer's specific location.
|
|
48
62
|
|
|
49
63
|
### **Horizon**
|
|
64
|
+
|
|
50
65
|
The apparent boundary between Earth and sky as seen by an observer. The local horizon depends on the observer's location and elevation.
|
|
51
66
|
|
|
52
67
|
### **Illuminated Fraction**
|
|
68
|
+
|
|
53
69
|
The portion of a celestial body's disk that appears illuminated as seen from Earth. For the Moon, this varies from 0 (new moon) to 1 (full moon).
|
|
54
70
|
|
|
55
71
|
### **Julian Date**
|
|
72
|
+
|
|
56
73
|
A continuous count of days since January 1, 4713 BCE. Used in astronomy for precise time measurements and calculations.
|
|
57
74
|
|
|
58
75
|
### **Light-Time Correction**
|
|
76
|
+
|
|
59
77
|
The adjustment made to account for the time it takes light to travel from a celestial object to Earth. Important for accurate position calculations.
|
|
60
78
|
|
|
61
79
|
### **Magnitude**
|
|
80
|
+
|
|
62
81
|
A measure of a celestial object's brightness. Lower numbers indicate brighter objects (e.g., -4 is brighter than +2). Apparent magnitude is as seen from Earth, absolute magnitude is intrinsic brightness.
|
|
63
82
|
|
|
64
83
|
### **Meridian**
|
|
84
|
+
|
|
65
85
|
An imaginary line passing through the observer's zenith and the north and south celestial poles. Objects transit (cross) the meridian when they reach their highest point in the sky.
|
|
66
86
|
|
|
67
87
|
### **Nutation**
|
|
88
|
+
|
|
68
89
|
Small periodic variations in the orientation of Earth's rotation axis, caused by gravitational forces from the Sun and Moon.
|
|
69
90
|
|
|
70
91
|
### **Obliquity**
|
|
92
|
+
|
|
71
93
|
The angle between Earth's equatorial plane and the ecliptic plane. Currently about 23.4° and slowly decreasing.
|
|
72
94
|
|
|
73
95
|
### **Parallax**
|
|
96
|
+
|
|
74
97
|
The apparent shift in position of a nearby object when viewed from different locations. Important for calculating distances to nearby stars.
|
|
75
98
|
|
|
76
99
|
### **Phase Angle**
|
|
100
|
+
|
|
77
101
|
The angle between the Sun, a celestial object, and Earth. For planets, this determines how much of the disk is illuminated.
|
|
78
102
|
|
|
79
103
|
### **Precession**
|
|
104
|
+
|
|
80
105
|
The slow, continuous change in the orientation of Earth's rotation axis, causing the positions of the equinoxes to shift over time.
|
|
81
106
|
|
|
82
107
|
### **Refraction**
|
|
108
|
+
|
|
83
109
|
The bending of light as it passes through Earth's atmosphere, causing celestial objects to appear slightly higher in the sky than they actually are.
|
|
84
110
|
|
|
85
111
|
### **Right Ascension**
|
|
112
|
+
|
|
86
113
|
The angular distance eastward along the celestial equator from the vernal equinox, measured in hours (0-24h) or degrees (0-360°).
|
|
87
114
|
|
|
88
115
|
### **Solstice**
|
|
116
|
+
|
|
89
117
|
The two times each year when the Sun reaches its northernmost (June) or southernmost (December) position relative to the celestial equator.
|
|
90
118
|
|
|
91
119
|
### **Topocentric**
|
|
120
|
+
|
|
92
121
|
As seen from a specific location on Earth's surface. Topocentric positions account for the observer's latitude, longitude, and elevation.
|
|
93
122
|
|
|
123
|
+
### **TEME (True Equator, Mean Equinox)**
|
|
124
|
+
|
|
125
|
+
The reference frame used by the SGP4/SDP4 satellite orbit propagators. It shares the true equator with the apparent frame but uses the mean equinox (tracked by GMST) instead of the true equinox (tracked by GAST).
|
|
126
|
+
|
|
94
127
|
### **Transit**
|
|
128
|
+
|
|
95
129
|
The moment when a celestial object crosses the observer's meridian, reaching its highest point in the sky for that day.
|
|
96
130
|
|
|
97
131
|
### **Twilight**
|
|
132
|
+
|
|
98
133
|
The period before sunrise and after sunset when the sky is partially illuminated by scattered sunlight. Civil, nautical, and astronomical twilight have different definitions based on the Sun's position below the horizon.
|
|
99
134
|
|
|
100
135
|
### **Zenith**
|
|
136
|
+
|
|
101
137
|
The point directly above an observer on Earth, at an altitude of 90°.
|
|
102
138
|
|
|
103
139
|
## Technical Terms
|
|
104
140
|
|
|
105
141
|
### **API (Application Programming Interface)**
|
|
142
|
+
|
|
106
143
|
The set of methods and classes that programmers use to interact with the Astronoby library.
|
|
107
144
|
|
|
145
|
+
### **Body**
|
|
146
|
+
|
|
147
|
+
A catalog definition that can position itself at an instant, returning a Position. Solar system bodies (the classes themselves, e.g. `Astronoby::Saturn`) and deep-sky objects (`Astronoby::DeepSkyObject` instances) both fulfil this role.
|
|
148
|
+
|
|
108
149
|
### **Cache**
|
|
150
|
+
|
|
109
151
|
A temporary storage system that stores frequently used calculation results to improve performance.
|
|
110
152
|
|
|
153
|
+
### **Centre**
|
|
154
|
+
|
|
155
|
+
The point a reference frame is relative to, modelled by the `Astronoby::Center` value object: barycentric (Solar System barycentre), geocentric (Earth's centre), or topocentric (a specific observer's location).
|
|
156
|
+
|
|
111
157
|
### **Coordinate System**
|
|
158
|
+
|
|
112
159
|
A system for specifying the position of objects in space. Astronoby supports equatorial, ecliptic, and horizontal coordinate systems.
|
|
113
160
|
|
|
114
161
|
### **Ephemeris File**
|
|
162
|
+
|
|
115
163
|
A binary file (usually with .bsp extension) containing orbital data for Solar System bodies. These files are produced by JPL and IMCCE.
|
|
116
164
|
|
|
117
165
|
### **Floating-Point Precision**
|
|
166
|
+
|
|
118
167
|
The accuracy of decimal number calculations. Higher precision values in Astronoby provide more accurate results but may be slower.
|
|
119
168
|
|
|
169
|
+
### **BCRS (Barycentric Celestial Reference System)**
|
|
170
|
+
|
|
171
|
+
A coordinate system centered on the Solar System barycentre with axes aligned to the ICRS. In Astronoby, this corresponds to the geometric reference frame.
|
|
172
|
+
|
|
173
|
+
### **ECEF (Earth-Centered Earth-Fixed)**
|
|
174
|
+
|
|
175
|
+
A Cartesian coordinate system that rotates with the Earth. Equivalent to ITRS. In Astronoby, observer positions are expressed in ECEF.
|
|
176
|
+
|
|
177
|
+
### **Equation of the Equinoxes**
|
|
178
|
+
|
|
179
|
+
The difference between Greenwich Apparent Sidereal Time (GAST) and Greenwich Mean Sidereal Time (GMST), equal to the nutation in longitude projected onto the equator (Δψ cos ε₀). It defines the angular offset between the mean and true equinoxes.
|
|
180
|
+
|
|
181
|
+
### **GAST (Greenwich Apparent Sidereal Time)**
|
|
182
|
+
|
|
183
|
+
The hour angle of the true vernal equinox at the Greenwich meridian. Equal to GMST plus the equation of the equinoxes. Used to rotate observer positions from ECEF into the true-equinox celestial frame.
|
|
184
|
+
|
|
185
|
+
### **GCRS (Geocentric Celestial Reference System)**
|
|
186
|
+
|
|
187
|
+
A coordinate system centered on the Earth's centre with axes aligned to the ICRS. In Astronoby, this corresponds to the astrometric reference frame.
|
|
188
|
+
|
|
189
|
+
### **GMST (Greenwich Mean Sidereal Time)**
|
|
190
|
+
|
|
191
|
+
The hour angle of the mean vernal equinox at the Greenwich meridian. It measures Earth's rotation relative to the mean equinox, without nutation corrections. Used in the TEME ↔ ECEF conversion.
|
|
192
|
+
|
|
193
|
+
### **ICRS (International Celestial Reference System)**
|
|
194
|
+
|
|
195
|
+
The standard celestial reference system adopted by the IAU. Its axes are defined by the positions of extragalactic radio sources and are practically fixed in space. JPL ephemeris data is given in ICRS-aligned coordinates.
|
|
196
|
+
|
|
197
|
+
### **ITRS (International Terrestrial Reference System)**
|
|
198
|
+
|
|
199
|
+
The standard Earth-fixed reference system, also known as ECEF (Earth-Centered Earth-Fixed). Observer positions in Astronoby are expressed in ITRS before being rotated into the celestial frame.
|
|
200
|
+
|
|
201
|
+
### **Position**
|
|
202
|
+
|
|
203
|
+
A target resolved at a specific instant, exposing the reference frame chain (astrometric, apparent, topocentric, ...) for a Body. Solar system body instances and `Astronoby::DeepSkyObjectPosition` instances fulfil this role.
|
|
204
|
+
|
|
120
205
|
### **Reference Frame**
|
|
121
|
-
|
|
206
|
+
|
|
207
|
+
A coordinate system used to specify positions. Astronoby provides geometric, astrometric, mean of date, apparent, and topocentric reference frames for celestial bodies, plus TEME for satellite tracking. See [Reference Frames](reference_frames.md) for how they map to IAU/IERS standard systems.
|
|
208
|
+
|
|
209
|
+
### **WGS-84 (World Geodetic System 1984)**
|
|
210
|
+
|
|
211
|
+
The geodetic reference system used by GPS and Astronoby for specifying observer latitude, longitude, and elevation. Observer coordinates are converted from WGS-84 geodetic to ITRS geocentric Cartesian internally.
|
|
122
212
|
|
|
123
213
|
### **SPICE**
|
|
214
|
+
|
|
124
215
|
A NASA toolkit for computing positions and orientations of Solar System bodies. Astronoby uses SPICE binary kernels (.bsp files) for ephemeris data.
|
|
125
216
|
|
|
126
217
|
### **UTC (Coordinated Universal Time)**
|
|
218
|
+
|
|
127
219
|
The primary time standard used worldwide. All astronomical calculations in Astronoby are based on UTC.
|
|
128
220
|
|
|
129
221
|
## Units and Measurements
|
|
130
222
|
|
|
131
223
|
### **Angular Units**
|
|
224
|
+
|
|
132
225
|
- **Degree (°)**: 1/360th of a circle
|
|
133
226
|
- **Arc Minute (′)**: 1/60th of a degree
|
|
134
227
|
- **Arc Second (″)**: 1/60th of an arc minute
|
|
@@ -136,16 +229,19 @@ The primary time standard used worldwide. All astronomical calculations in Astro
|
|
|
136
229
|
- **Radian**: 180/π degrees (≈57.3°)
|
|
137
230
|
|
|
138
231
|
### **Distance Units**
|
|
232
|
+
|
|
139
233
|
- **Astronomical Unit (AU)**: The average distance between Earth and Sun (≈149.6 million km)
|
|
140
234
|
- **Kilometre (km)**: Standard metric unit for distances
|
|
141
235
|
- **Metre (m)**: Standard metric unit for elevations
|
|
142
236
|
|
|
143
237
|
### **Time Units**
|
|
238
|
+
|
|
144
239
|
- **Julian Day**: Continuous day count since 4713 BCE
|
|
145
240
|
- **Terrestrial Time (TT)**: Astronomical time scale used for calculations
|
|
146
241
|
- **UTC**: Coordinated Universal Time, the standard for civil time
|
|
147
242
|
|
|
148
243
|
## See also
|
|
244
|
+
|
|
149
245
|
- [Quick Start Guide](README.md) - for getting started
|
|
150
246
|
- [Coordinates](coordinates.md) - for coordinate systems
|
|
151
247
|
- [Reference Frames](reference_frames.md) - for position calculations
|
data/docs/iers.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# IERS Data
|
|
2
|
+
|
|
3
|
+
Astronoby relies on the [`iers`](https://github.com/rhannequin/iers) gem for
|
|
4
|
+
access to data published by the [International Earth Rotation and Reference
|
|
5
|
+
Systems Service (IERS)][IERS]. This data is used for:
|
|
6
|
+
|
|
7
|
+
- **Delta T (TT - UT1)**: the difference between Terrestrial Time and Universal
|
|
8
|
+
Time, used when converting between UTC and the internal TT time scale (see
|
|
9
|
+
[Instant](instant.md))
|
|
10
|
+
- **Greenwich Mean Sidereal Time (GMST)**: computed via the Earth Rotation Angle
|
|
11
|
+
(ERA) based expression from the [IERS Conventions (2010)]
|
|
12
|
+
|
|
13
|
+
## Data coverage
|
|
14
|
+
|
|
15
|
+
The `iers` gem ships with bundled IERS data files that work out of the box
|
|
16
|
+
with no network access required. The bundled data covers dates roughly from
|
|
17
|
+
1800 to early 2027.
|
|
18
|
+
|
|
19
|
+
- **Before 1800**: Delta T is not available; Astronoby returns 0.
|
|
20
|
+
- **After the end of bundled data**: Astronoby uses the last known Delta T
|
|
21
|
+
value, which remains a reasonable approximation for dates in the near future.
|
|
22
|
+
|
|
23
|
+
## Updating data
|
|
24
|
+
|
|
25
|
+
The bundled data can be refreshed to extend coverage into the future:
|
|
26
|
+
|
|
27
|
+
```rb
|
|
28
|
+
IERS::Data.update!
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
This downloads the latest IERS finals data and stores it in the gem's cache
|
|
32
|
+
directory. Updated data is used automatically on subsequent calculations.
|
|
33
|
+
|
|
34
|
+
## See also
|
|
35
|
+
|
|
36
|
+
- [Instant](instant.md) - for time scales and Delta T
|
|
37
|
+
- [Configuration](configuration.md) - for performance settings
|
|
38
|
+
|
|
39
|
+
[IERS]: https://www.iers.org
|
|
40
|
+
[IERS Conventions (2010)]: https://www.iers.org/IERS/EN/Publications/TechnicalNotes/tn36.html
|