pyephemera 0.4.1__tar.gz
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.
- pyephemera-0.4.1/CMakeLists.txt +34 -0
- pyephemera-0.4.1/LICENSE +21 -0
- pyephemera-0.4.1/PKG-INFO +97 -0
- pyephemera-0.4.1/README.md +75 -0
- pyephemera-0.4.1/csrc/data/asteroid_data.h +13 -0
- pyephemera-0.4.1/csrc/data/corr_data.h +27 -0
- pyephemera-0.4.1/csrc/data/delta_t_data.cpp +65 -0
- pyephemera-0.4.1/csrc/data/delta_t_data.h +14 -0
- pyephemera-0.4.1/csrc/data/elp_data.h +16 -0
- pyephemera-0.4.1/csrc/data/pluto_data.h +15 -0
- pyephemera-0.4.1/csrc/data/stars_data.h +23 -0
- pyephemera-0.4.1/csrc/data/vsop87d_data.h +18 -0
- pyephemera-0.4.1/csrc/eph-1as-chiron.bin +0 -0
- pyephemera-0.4.1/csrc/include/ephemeris/ephemeris.h +547 -0
- pyephemera-0.4.1/csrc/src/asteroids.cpp +48 -0
- pyephemera-0.4.1/csrc/src/ayanamsa.cpp +130 -0
- pyephemera-0.4.1/csrc/src/compressed.cpp +214 -0
- pyephemera-0.4.1/csrc/src/correction.cpp +65 -0
- pyephemera-0.4.1/csrc/src/data.cpp +393 -0
- pyephemera-0.4.1/csrc/src/data.h +133 -0
- pyephemera-0.4.1/csrc/src/eclipses.cpp +664 -0
- pyephemera-0.4.1/csrc/src/elp.cpp +103 -0
- pyephemera-0.4.1/csrc/src/embedded_none.cpp +12 -0
- pyephemera-0.4.1/csrc/src/ephemeris.cpp +639 -0
- pyephemera-0.4.1/csrc/src/frames.cpp +350 -0
- pyephemera-0.4.1/csrc/src/houses.cpp +320 -0
- pyephemera-0.4.1/csrc/src/internal.h +137 -0
- pyephemera-0.4.1/csrc/src/minor.cpp +136 -0
- pyephemera-0.4.1/csrc/src/moon.cpp +30 -0
- pyephemera-0.4.1/csrc/src/orbits.cpp +249 -0
- pyephemera-0.4.1/csrc/src/phenomena.cpp +208 -0
- pyephemera-0.4.1/csrc/src/pluto.cpp +23 -0
- pyephemera-0.4.1/csrc/src/search.cpp +296 -0
- pyephemera-0.4.1/csrc/src/stars.cpp +269 -0
- pyephemera-0.4.1/csrc/src/time.cpp +220 -0
- pyephemera-0.4.1/csrc/src/uranian.cpp +77 -0
- pyephemera-0.4.1/csrc/src/util.cpp +101 -0
- pyephemera-0.4.1/csrc/src/vsop87.cpp +56 -0
- pyephemera-0.4.1/csrc/tools/embed.cmake +38 -0
- pyephemera-0.4.1/pyproject.toml +43 -0
- pyephemera-0.4.1/src/ephemera/__init__.py +809 -0
- pyephemera-0.4.1/src/ephemera/_native.py +165 -0
- pyephemera-0.4.1/src/ephemera/data/eph-01as-chiron.bin +0 -0
- pyephemera-0.4.1/src/ephemera/data/eph-01as.bin +0 -0
- pyephemera-0.4.1/src/ephemera/data/eph-1as-chiron.bin +0 -0
- pyephemera-0.4.1/src/ephemera/data/eph-1as.bin +0 -0
- pyephemera-0.4.1/src/ephemera/data/eph-asteroids.bin +0 -0
- pyephemera-0.4.1/src/ephemera/data/eph-chiron.bin +0 -0
- pyephemera-0.4.1/src/ephemera/data/eph-stars.bin +0 -0
- pyephemera-0.4.1/src/ephemera/py.typed +0 -0
- pyephemera-0.4.1/tests/test_ephemera.py +90 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# The Python package's native library: Ephemera as a shared library with the
|
|
2
|
+
# 1" series and Chiron (eph-1as-chiron.bin) built in, loaded with ctypes.
|
|
3
|
+
# Built from the sources staged in csrc/ by `make python`.
|
|
4
|
+
cmake_minimum_required(VERSION 3.16)
|
|
5
|
+
project(pyephemera C CXX)
|
|
6
|
+
|
|
7
|
+
set(CMAKE_CXX_STANDARD 17)
|
|
8
|
+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
9
|
+
if(NOT CMAKE_BUILD_TYPE)
|
|
10
|
+
set(CMAKE_BUILD_TYPE Release)
|
|
11
|
+
endif()
|
|
12
|
+
|
|
13
|
+
set(CSRC ${CMAKE_CURRENT_SOURCE_DIR}/csrc)
|
|
14
|
+
set(EMBED_SRC ${CMAKE_CURRENT_BINARY_DIR}/embedded_data.cpp)
|
|
15
|
+
add_custom_command(OUTPUT ${EMBED_SRC}
|
|
16
|
+
COMMAND ${CMAKE_COMMAND} -DIN=${CSRC}/eph-1as-chiron.bin -DOUT=${EMBED_SRC}
|
|
17
|
+
-P ${CSRC}/tools/embed.cmake
|
|
18
|
+
DEPENDS ${CSRC}/eph-1as-chiron.bin ${CSRC}/tools/embed.cmake)
|
|
19
|
+
|
|
20
|
+
file(GLOB SOURCES ${CSRC}/src/*.cpp)
|
|
21
|
+
list(FILTER SOURCES EXCLUDE REGEX "embedded_none\\.cpp$")
|
|
22
|
+
|
|
23
|
+
add_library(ephemera_native SHARED ${SOURCES} ${EMBED_SRC} ${CSRC}/data/delta_t_data.cpp)
|
|
24
|
+
target_include_directories(ephemera_native PRIVATE ${CSRC}/include ${CSRC}/src ${CSRC}/data)
|
|
25
|
+
set_target_properties(ephemera_native PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
|
26
|
+
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
|
|
27
|
+
target_compile_options(ephemera_native PRIVATE -O2)
|
|
28
|
+
endif()
|
|
29
|
+
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
30
|
+
# No dependency on the system's C++ runtime.
|
|
31
|
+
target_link_options(ephemera_native PRIVATE -static-libstdc++ -static-libgcc)
|
|
32
|
+
endif()
|
|
33
|
+
|
|
34
|
+
install(TARGETS ephemera_native LIBRARY DESTINATION ephemera RUNTIME DESTINATION ephemera)
|
pyephemera-0.4.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Intellecat
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pyephemera
|
|
3
|
+
Version: 0.4.1
|
|
4
|
+
Summary: Pocket-sized ephemeris for astrology and astronomy: planets, Moon, Chiron, nodes, houses, ayanamsas, stars, eclipses, Uranian points and 1,000+ asteroids. No dependencies, MIT.
|
|
5
|
+
Keywords: ephemeris,astrology,astronomy,planets,houses,ayanamsa,sidereal,eclipse
|
|
6
|
+
Author: Intellecat
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Intended Audience :: Science/Research
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: C++
|
|
15
|
+
Classifier: Topic :: Scientific/Engineering :: Astronomy
|
|
16
|
+
Classifier: Typing :: Typed
|
|
17
|
+
Project-URL: Homepage, https://github.com/intellecat/ephemera
|
|
18
|
+
Project-URL: Documentation, https://github.com/intellecat/ephemera/blob/main/docs/guide.md
|
|
19
|
+
Project-URL: Issues, https://github.com/intellecat/ephemera/issues
|
|
20
|
+
Requires-Python: >=3.9
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
|
|
23
|
+
<p align="center"><img alt="Ephemera" src="https://raw.githubusercontent.com/intellecat/ephemera/main/assets/logo/lockup-horizontal-light.svg" width="420"></p>
|
|
24
|
+
|
|
25
|
+
# pyephemera
|
|
26
|
+
|
|
27
|
+
**A pocket-sized, MIT-licensed ephemeris for astrology and astronomy.**
|
|
28
|
+
JPL-grade planetary positions, houses, ayanamsas, eclipses, fixed stars and
|
|
29
|
+
1,000+ asteroids, from a small C library with no dependencies. Wheels for
|
|
30
|
+
Linux, macOS and Windows; Python 3.9+.
|
|
31
|
+
|
|
32
|
+
- **MIT licensed:** use it in closed-source and commercial apps.
|
|
33
|
+
- **Accurate:** within 0.6″ of NASA JPL's DE440 over 1550–2650 with the
|
|
34
|
+
built-in data, or 0.03″ with the high-precision tables.
|
|
35
|
+
- **Small:** the planets, the Moon and Chiron are built in (204 KB); more
|
|
36
|
+
data files come with the package.
|
|
37
|
+
- **Complete for astrology:** 14 house systems, 42 ayanamsas, nodes and
|
|
38
|
+
Lilith, Uranian points, eclipses, returns and stations, sidereal
|
|
39
|
+
returns, planetary nodes and apsides, and 411 fixed stars.
|
|
40
|
+
- **Independently verified** against JPL, NASA's eclipse canon and
|
|
41
|
+
India's official ephemeris. See the
|
|
42
|
+
[accuracy page](https://github.com/intellecat/ephemera/blob/main/docs/accuracy.md).
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
pip install pyephemera
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
```python
|
|
49
|
+
import ephemera as eph
|
|
50
|
+
|
|
51
|
+
jd = eph.julian_date(2026, 1, 1.5) # 1 Jan 2026, 12:00 UT
|
|
52
|
+
moon = eph.position(eph.Body.MOON, jd) # degrees, AU, per day
|
|
53
|
+
cusps = eph.houses(jd, -0.1278, 51.5074, eph.HouseSystem.PLACIDUS) # London
|
|
54
|
+
lahiri = eph.ayanamsa(eph.Ayanamsa.LAHIRI, eph.ut_to_tt(jd)) # sidereal = tropical − ayanamsa
|
|
55
|
+
eclipse = eph.solar_eclipse(eph.ut_to_tt(jd)) # the next solar eclipse
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Times
|
|
59
|
+
|
|
60
|
+
Positions take a **UT** Julian day; searches, eclipses and orbits take
|
|
61
|
+
**TT**. `utc_to_jd` converts civil time (with leap seconds) and accepts a
|
|
62
|
+
`datetime`:
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
from datetime import datetime
|
|
66
|
+
from zoneinfo import ZoneInfo
|
|
67
|
+
|
|
68
|
+
jd_tt, jd_ut = eph.utc_to_jd(datetime(1990, 6, 15, 14, 30, tzinfo=ZoneInfo("Europe/London")))
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Data files
|
|
72
|
+
|
|
73
|
+
The 1″ series with Chiron is built in. The package also carries:
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
eph.load_package_data("stars") # 411 named stars, star-based ayanamsas
|
|
77
|
+
eph.load_package_data("asteroids") # Ceres, Pallas, Juno, Vesta (1600–2500)
|
|
78
|
+
eph.load_package_data("01as") # the 0.2″ series
|
|
79
|
+
eph.load_data("de440-2000.bin") # any file from the repository, by path or bytes
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
The DE440 tables (0.002″) and the minor-planet files (1,000+ asteroids,
|
|
83
|
+
1900–2100) are downloads from the
|
|
84
|
+
[repository](https://github.com/intellecat/ephemera/blob/main/docs/data.md).
|
|
85
|
+
Loaded data is shared by the whole process.
|
|
86
|
+
|
|
87
|
+
## Documentation
|
|
88
|
+
|
|
89
|
+
The [guide](https://github.com/intellecat/ephemera/blob/main/docs/guide.md)
|
|
90
|
+
covers every feature. The Python names follow the JavaScript API in
|
|
91
|
+
snake_case: `houses_info`, `longitude_crossing`, `solar_eclipse_local`,
|
|
92
|
+
`minor_body`; calls that find nothing return `None`.
|
|
93
|
+
|
|
94
|
+
## License
|
|
95
|
+
|
|
96
|
+
MIT. Built from public data: NASA JPL, NASA's eclipse catalogues and
|
|
97
|
+
Hipparcos. No third-party code is included.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<p align="center"><img alt="Ephemera" src="https://raw.githubusercontent.com/intellecat/ephemera/main/assets/logo/lockup-horizontal-light.svg" width="420"></p>
|
|
2
|
+
|
|
3
|
+
# pyephemera
|
|
4
|
+
|
|
5
|
+
**A pocket-sized, MIT-licensed ephemeris for astrology and astronomy.**
|
|
6
|
+
JPL-grade planetary positions, houses, ayanamsas, eclipses, fixed stars and
|
|
7
|
+
1,000+ asteroids, from a small C library with no dependencies. Wheels for
|
|
8
|
+
Linux, macOS and Windows; Python 3.9+.
|
|
9
|
+
|
|
10
|
+
- **MIT licensed:** use it in closed-source and commercial apps.
|
|
11
|
+
- **Accurate:** within 0.6″ of NASA JPL's DE440 over 1550–2650 with the
|
|
12
|
+
built-in data, or 0.03″ with the high-precision tables.
|
|
13
|
+
- **Small:** the planets, the Moon and Chiron are built in (204 KB); more
|
|
14
|
+
data files come with the package.
|
|
15
|
+
- **Complete for astrology:** 14 house systems, 42 ayanamsas, nodes and
|
|
16
|
+
Lilith, Uranian points, eclipses, returns and stations, sidereal
|
|
17
|
+
returns, planetary nodes and apsides, and 411 fixed stars.
|
|
18
|
+
- **Independently verified** against JPL, NASA's eclipse canon and
|
|
19
|
+
India's official ephemeris. See the
|
|
20
|
+
[accuracy page](https://github.com/intellecat/ephemera/blob/main/docs/accuracy.md).
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
pip install pyephemera
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
import ephemera as eph
|
|
28
|
+
|
|
29
|
+
jd = eph.julian_date(2026, 1, 1.5) # 1 Jan 2026, 12:00 UT
|
|
30
|
+
moon = eph.position(eph.Body.MOON, jd) # degrees, AU, per day
|
|
31
|
+
cusps = eph.houses(jd, -0.1278, 51.5074, eph.HouseSystem.PLACIDUS) # London
|
|
32
|
+
lahiri = eph.ayanamsa(eph.Ayanamsa.LAHIRI, eph.ut_to_tt(jd)) # sidereal = tropical − ayanamsa
|
|
33
|
+
eclipse = eph.solar_eclipse(eph.ut_to_tt(jd)) # the next solar eclipse
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Times
|
|
37
|
+
|
|
38
|
+
Positions take a **UT** Julian day; searches, eclipses and orbits take
|
|
39
|
+
**TT**. `utc_to_jd` converts civil time (with leap seconds) and accepts a
|
|
40
|
+
`datetime`:
|
|
41
|
+
|
|
42
|
+
```python
|
|
43
|
+
from datetime import datetime
|
|
44
|
+
from zoneinfo import ZoneInfo
|
|
45
|
+
|
|
46
|
+
jd_tt, jd_ut = eph.utc_to_jd(datetime(1990, 6, 15, 14, 30, tzinfo=ZoneInfo("Europe/London")))
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Data files
|
|
50
|
+
|
|
51
|
+
The 1″ series with Chiron is built in. The package also carries:
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
eph.load_package_data("stars") # 411 named stars, star-based ayanamsas
|
|
55
|
+
eph.load_package_data("asteroids") # Ceres, Pallas, Juno, Vesta (1600–2500)
|
|
56
|
+
eph.load_package_data("01as") # the 0.2″ series
|
|
57
|
+
eph.load_data("de440-2000.bin") # any file from the repository, by path or bytes
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The DE440 tables (0.002″) and the minor-planet files (1,000+ asteroids,
|
|
61
|
+
1900–2100) are downloads from the
|
|
62
|
+
[repository](https://github.com/intellecat/ephemera/blob/main/docs/data.md).
|
|
63
|
+
Loaded data is shared by the whole process.
|
|
64
|
+
|
|
65
|
+
## Documentation
|
|
66
|
+
|
|
67
|
+
The [guide](https://github.com/intellecat/ephemera/blob/main/docs/guide.md)
|
|
68
|
+
covers every feature. The Python names follow the JavaScript API in
|
|
69
|
+
snake_case: `houses_info`, `longitude_crossing`, `solar_eclipse_local`,
|
|
70
|
+
`minor_body`; calls that find nothing return `None`.
|
|
71
|
+
|
|
72
|
+
## License
|
|
73
|
+
|
|
74
|
+
MIT. Built from public data: NASA JPL, NASA's eclipse catalogues and
|
|
75
|
+
Hipparcos. No third-party code is included.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* Generated by tools/fit_asteroids.py -- do not edit. */
|
|
2
|
+
#pragma once
|
|
3
|
+
|
|
4
|
+
namespace eph {
|
|
5
|
+
namespace ast {
|
|
6
|
+
|
|
7
|
+
struct Body { const double* t; const float* c;
|
|
8
|
+
int nseg; int ncoef; };
|
|
9
|
+
|
|
10
|
+
extern const Body bodies[5];
|
|
11
|
+
|
|
12
|
+
} // namespace ast
|
|
13
|
+
} // namespace eph
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* Generated by tools/fit_correction.py (de440.bsp, 1550-2650) -- do not edit. */
|
|
2
|
+
#pragma once
|
|
3
|
+
|
|
4
|
+
namespace eph {
|
|
5
|
+
namespace corr {
|
|
6
|
+
|
|
7
|
+
/* theta = phase + rate * T (radians; T in centuries from J2000). */
|
|
8
|
+
struct Harmonic {
|
|
9
|
+
double phase, rate;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
/* Per coordinate (longitude and latitude in radians, distance in
|
|
13
|
+
* AU): n0 Chebyshev coefficients of the secular part, then for each
|
|
14
|
+
* harmonic nh of its cosine and nh of its sine amplitude, all in
|
|
15
|
+
* u = (2T - tmin - tmax) / (tmax - tmin). */
|
|
16
|
+
struct Series {
|
|
17
|
+
double tmin, tmax;
|
|
18
|
+
int n0, nh, nharm;
|
|
19
|
+
const Harmonic* harm;
|
|
20
|
+
const float* coef; /* 3 * (n0 + 2 * nharm * nh) */
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
extern const Series earth, mercury, venus, mars, jupiter,
|
|
24
|
+
saturn, uranus, neptune, moon;
|
|
25
|
+
|
|
26
|
+
} // namespace corr
|
|
27
|
+
} // namespace eph
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/* Generated by tools/gen_delta_t.py -- do not edit. */
|
|
2
|
+
#include "delta_t_data.h"
|
|
3
|
+
|
|
4
|
+
namespace eph {
|
|
5
|
+
namespace delta_t {
|
|
6
|
+
|
|
7
|
+
const float kTable[kLastYear - kFirstYear + 1] = {
|
|
8
|
+
/* 1620 */ 79.51f, 78.14f, 76.78f, 75.43f, 74.10f, 72.77f, 71.46f, 70.16f, 68.87f, 67.59f,
|
|
9
|
+
/* 1630 */ 66.33f, 65.08f, 63.85f, 62.62f, 61.41f, 60.21f, 59.03f, 57.86f, 56.70f, 55.56f,
|
|
10
|
+
/* 1640 */ 54.43f, 53.31f, 52.21f, 51.13f, 50.06f, 49.00f, 47.96f, 46.93f, 45.92f, 44.92f,
|
|
11
|
+
/* 1650 */ 43.94f, 42.98f, 42.03f, 41.10f, 40.18f, 39.28f, 38.39f, 37.52f, 36.66f, 35.82f,
|
|
12
|
+
/* 1660 */ 35.00f, 34.18f, 33.39f, 32.61f, 31.85f, 31.09f, 30.36f, 29.64f, 28.94f, 28.25f,
|
|
13
|
+
/* 1670 */ 27.57f, 26.91f, 26.27f, 25.64f, 25.02f, 24.42f, 23.84f, 23.27f, 22.71f, 22.17f,
|
|
14
|
+
/* 1680 */ 21.64f, 21.13f, 20.63f, 20.15f, 19.68f, 19.22f, 18.78f, 18.35f, 17.94f, 17.54f,
|
|
15
|
+
/* 1690 */ 17.16f, 16.79f, 16.44f, 16.09f, 15.77f, 15.45f, 15.16f, 14.87f, 14.60f, 14.34f,
|
|
16
|
+
/* 1700 */ 14.10f, 13.87f, 13.65f, 13.45f, 13.26f, 13.09f, 12.92f, 12.78f, 12.64f, 12.52f,
|
|
17
|
+
/* 1710 */ 12.41f, 12.32f, 12.24f, 12.17f, 12.12f, 12.08f, 12.05f, 12.03f, 12.03f, 12.04f,
|
|
18
|
+
/* 1720 */ 12.07f, 12.11f, 12.16f, 12.22f, 12.29f, 12.38f, 12.48f, 12.58f, 12.70f, 12.82f,
|
|
19
|
+
/* 1730 */ 12.96f, 13.10f, 13.26f, 13.42f, 13.58f, 13.76f, 13.94f, 14.12f, 14.31f, 14.51f,
|
|
20
|
+
/* 1740 */ 14.71f, 14.92f, 15.13f, 15.34f, 15.55f, 15.77f, 15.99f, 16.21f, 16.43f, 16.65f,
|
|
21
|
+
/* 1750 */ 16.88f, 17.10f, 17.32f, 17.54f, 17.76f, 17.98f, 18.19f, 18.40f, 18.61f, 18.81f,
|
|
22
|
+
/* 1760 */ 19.01f, 19.21f, 19.40f, 19.58f, 19.76f, 19.93f, 20.10f, 20.25f, 20.40f, 20.54f,
|
|
23
|
+
/* 1770 */ 20.67f, 20.80f, 20.91f, 21.01f, 21.11f, 21.19f, 21.26f, 21.32f, 21.36f, 21.40f,
|
|
24
|
+
/* 1780 */ 21.42f, 21.42f, 21.42f, 21.39f, 21.36f, 21.30f, 21.24f, 21.15f, 21.05f, 20.93f,
|
|
25
|
+
/* 1790 */ 20.79f, 20.64f, 20.47f, 20.28f, 20.06f, 19.83f, 19.58f, 19.31f, 19.02f, 18.70f,
|
|
26
|
+
/* 1800 */ 18.37f, 18.01f, 17.64f, 17.27f, 16.92f, 16.58f, 16.29f, 16.04f, 15.84f, 15.72f,
|
|
27
|
+
/* 1810 */ 15.68f, 15.72f, 15.84f, 16.00f, 16.18f, 16.37f, 16.53f, 16.65f, 16.71f, 16.67f,
|
|
28
|
+
/* 1820 */ 16.52f, 16.23f, 15.84f, 15.34f, 14.77f, 14.14f, 13.47f, 12.78f, 12.10f, 11.43f,
|
|
29
|
+
/* 1830 */ 10.80f, 10.23f, 9.72f, 9.26f, 8.86f, 8.52f, 8.23f, 8.00f, 7.82f, 7.70f,
|
|
30
|
+
/* 1840 */ 7.63f, 7.62f, 7.65f, 7.73f, 7.86f, 8.02f, 8.23f, 8.46f, 8.73f, 9.02f,
|
|
31
|
+
/* 1850 */ 9.34f, 9.67f, 9.98f, 10.23f, 10.37f, 10.36f, 10.18f, 9.88f, 9.54f, 9.24f,
|
|
32
|
+
/* 1860 */ 9.04f, 8.99f, 9.01f, 8.97f, 8.76f, 8.25f, 7.38f, 6.22f, 4.91f, 3.58f,
|
|
33
|
+
/* 1870 */ 2.37f, 1.36f, 0.56f, -0.10f, -0.65f, -1.13f, -1.58f, -2.01f, -2.43f, -2.83f,
|
|
34
|
+
/* 1880 */ -3.21f, -3.58f, -3.91f, -4.17f, -4.34f, -4.39f, -4.31f, -4.14f, -3.97f, -3.86f,
|
|
35
|
+
/* 1890 */ -3.88f, -4.07f, -4.37f, -4.69f, -4.93f, -5.02f, -4.87f, -4.47f, -3.86f, -3.02f,
|
|
36
|
+
/* 1900 */ -1.98f, -0.75f, 0.62f, 2.06f, 3.51f, 4.92f, 6.24f, 7.49f, 8.70f, 9.90f,
|
|
37
|
+
/* 1910 */ 11.14f, 12.43f, 13.75f, 15.06f, 16.32f, 17.48f, 18.52f, 19.44f, 20.25f, 20.98f,
|
|
38
|
+
/* 1920 */ 21.62f, 22.19f, 22.69f, 23.12f, 23.49f, 23.79f, 24.02f, 24.20f, 24.32f, 24.39f,
|
|
39
|
+
/* 1930 */ 24.42f, 24.41f, 24.38f, 24.32f, 24.24f, 24.16f, 24.09f, 24.04f, 24.06f, 24.17f,
|
|
40
|
+
/* 1940 */ 24.42f, 24.83f, 25.35f, 25.92f, 26.51f, 27.05f, 27.51f, 27.89f, 28.24f, 28.58f,
|
|
41
|
+
/* 1950 */ 28.93f, 29.32f, 29.70f, 30.00f, 30.20f, 30.41f, 30.76f, 31.34f, 32.03f, 32.65f,
|
|
42
|
+
/* 1960 */ 33.07f, 33.36f, 33.62f, 33.96f, 34.44f, 35.09f, 35.95f, 36.93f, 37.95f, 38.95f,
|
|
43
|
+
/* 1970 */ 39.93f, 40.95f, 42.14f, 43.37f, 44.48f, 45.48f, 46.46f, 47.52f, 48.53f, 49.59f,
|
|
44
|
+
/* 1980 */ 50.54f, 51.38f, 52.17f, 52.96f, 53.79f, 54.34f, 54.87f, 55.32f, 55.82f, 56.30f,
|
|
45
|
+
/* 1990 */ 56.86f, 57.57f, 58.31f, 59.12f, 59.98f, 60.79f, 61.63f, 62.30f, 62.97f, 63.47f,
|
|
46
|
+
/* 2000 */ 63.83f, 64.09f, 64.30f, 64.47f, 64.57f, 64.69f, 64.85f, 65.15f, 65.46f, 65.78f,
|
|
47
|
+
/* 2010 */ 66.07f, 66.32f, 66.60f, 66.91f, 67.28f, 67.64f, 68.10f, 68.59f, 68.97f, 69.22f,
|
|
48
|
+
/* 2020 */ 69.36f, 69.36f, 69.29f, 69.20f, 69.18f, 69.14f, 69.11f, 69.10f, 69.08f, 69.07f,
|
|
49
|
+
/* 2030 */ 69.08f, 69.09f, 69.12f, 69.16f, 69.20f, 69.26f, 69.33f, 69.41f, 69.51f, 69.61f,
|
|
50
|
+
/* 2040 */ 69.72f, 69.85f, 69.98f, 70.13f, 70.28f, 70.45f, 70.63f, 70.81f, 71.01f, 71.22f,
|
|
51
|
+
/* 2050 */ 71.44f, 71.67f, 71.92f, 72.17f, 72.43f, 72.70f, 72.99f, 73.28f, 73.59f, 73.90f,
|
|
52
|
+
/* 2060 */ 74.23f, 74.57f, 74.92f, 75.28f, 75.64f, 76.02f, 76.41f, 76.82f, 77.23f, 77.65f,
|
|
53
|
+
/* 2070 */ 78.08f, 78.52f, 78.98f, 79.44f, 79.92f, 80.40f, 80.90f, 81.40f, 81.92f, 82.45f,
|
|
54
|
+
/* 2080 */ 82.98f, 83.53f, 84.09f, 84.66f, 85.24f, 85.83f, 86.43f, 87.04f, 87.66f, 88.29f,
|
|
55
|
+
/* 2090 */ 88.94f, 89.59f, 90.25f, 90.93f, 91.61f, 92.30f, 93.01f, 93.72f, 94.45f, 95.18f,
|
|
56
|
+
/* 2100 */ 95.93f, 96.68f, 97.45f, 98.22f, 99.01f, 99.81f, 100.62f, 101.44f, 102.26f, 103.10f,
|
|
57
|
+
/* 2110 */ 103.95f, 104.81f, 105.68f, 106.56f, 107.45f, 108.35f, 109.26f, 110.18f, 111.11f, 112.05f,
|
|
58
|
+
/* 2120 */ 113.00f, 113.97f, 114.94f, 115.92f, 116.91f, 117.91f, 118.93f, 119.95f, 120.98f, 122.03f,
|
|
59
|
+
/* 2130 */ 123.08f, 124.14f, 125.21f, 126.30f, 127.39f, 128.49f, 129.61f, 130.73f, 131.87f, 133.01f,
|
|
60
|
+
/* 2140 */ 134.16f, 135.33f, 136.50f, 137.69f, 138.88f, 140.09f, 141.30f, 142.52f, 143.76f, 145.00f,
|
|
61
|
+
/* 2150 */ 146.26f,
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
} // namespace delta_t
|
|
65
|
+
} // namespace eph
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* Generated by tools/gen_delta_t.py -- do not edit. */
|
|
2
|
+
#pragma once
|
|
3
|
+
|
|
4
|
+
namespace eph {
|
|
5
|
+
namespace delta_t {
|
|
6
|
+
|
|
7
|
+
constexpr int kFirstYear = 1620;
|
|
8
|
+
constexpr int kLastYear = 2150;
|
|
9
|
+
|
|
10
|
+
/* Delta-T in seconds at 1 January of each year. */
|
|
11
|
+
extern const float kTable[kLastYear - kFirstYear + 1];
|
|
12
|
+
|
|
13
|
+
} // namespace delta_t
|
|
14
|
+
} // namespace eph
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/* Generated by tools/gen_elp.py -- do not edit. */
|
|
2
|
+
#pragma once
|
|
3
|
+
|
|
4
|
+
namespace eph {
|
|
5
|
+
namespace elp {
|
|
6
|
+
|
|
7
|
+
struct MainTerm { double ph1, ph2, ph3, ph4; float amp;
|
|
8
|
+
unsigned int packed; };
|
|
9
|
+
struct PertTerm { double ph1; float amp; unsigned int packed; };
|
|
10
|
+
struct Coord { const MainTerm* main; int nmain;
|
|
11
|
+
const PertTerm* pert; int npert; };
|
|
12
|
+
|
|
13
|
+
extern const Coord coords[3];
|
|
14
|
+
|
|
15
|
+
} // namespace elp
|
|
16
|
+
} // namespace eph
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/* Generated by tools/fit_pluto.py (de440.bsp, 1550-2650) -- do not edit. */
|
|
2
|
+
#pragma once
|
|
3
|
+
|
|
4
|
+
namespace eph {
|
|
5
|
+
namespace pluto_fit {
|
|
6
|
+
|
|
7
|
+
/* Heliocentric x, y, z (AU, mean ecliptic J2000) per interval
|
|
8
|
+
* t[i]..t[i+1] (JD TT), ncoef Chebyshev coefficients each. */
|
|
9
|
+
struct Body { const double* t; const float* c;
|
|
10
|
+
int nseg; int ncoef; };
|
|
11
|
+
|
|
12
|
+
extern const Body body;
|
|
13
|
+
|
|
14
|
+
} // namespace pluto_fit
|
|
15
|
+
} // namespace eph
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* Generated by tools/make_stars.py -- do not edit. */
|
|
2
|
+
#pragma once
|
|
3
|
+
|
|
4
|
+
namespace eph {
|
|
5
|
+
namespace stars {
|
|
6
|
+
|
|
7
|
+
/* ICRS position at epoch J2000.0 (radians), proper motion
|
|
8
|
+
* (mas/yr; RA as dRA/dt cos dec), parallax (mas), radial
|
|
9
|
+
* velocity (km/s), V magnitude. */
|
|
10
|
+
struct Star {
|
|
11
|
+
const char* name;
|
|
12
|
+
const char* designation;
|
|
13
|
+
unsigned hip;
|
|
14
|
+
float vmag;
|
|
15
|
+
double ra, dec;
|
|
16
|
+
float pm_ra, pm_dec, parallax, rv;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
extern const Star catalogue[];
|
|
20
|
+
extern const int count;
|
|
21
|
+
|
|
22
|
+
} // namespace stars
|
|
23
|
+
} // namespace eph
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* Generated by tools/gen_vsop87.py -- do not edit by hand. */
|
|
2
|
+
#pragma once
|
|
3
|
+
|
|
4
|
+
namespace eph {
|
|
5
|
+
namespace vsop87d {
|
|
6
|
+
|
|
7
|
+
struct Term { float a; unsigned int b; double c; };
|
|
8
|
+
struct Series { double poly; const Term* terms; int count; };
|
|
9
|
+
struct Body {
|
|
10
|
+
const Series* l; int nl;
|
|
11
|
+
const Series* b; int nb;
|
|
12
|
+
const Series* r; int nr;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
extern const Body bodies[8];
|
|
16
|
+
|
|
17
|
+
} // namespace vsop87d
|
|
18
|
+
} // namespace eph
|
|
Binary file
|