Sluneční soustava a určování polohy u jiných těles
Dva druhy scénářů pracují za hranicí systému Země–Měsíc:
solar-systemhlásí každé těleso katalogu v jedné epoše: polohu a rychlost, fyzikální konstanty, světelný čas a vzdálenost od tělesa pozorovatele a dráhovou stopu.body-pntumísťuje navigačního uživatele (oběžnici nebo povrchový lander) kolem libovolného tělesa katalogu jiného než Slunce a Země, s místní navigační konstelací a nepovinnou vzdáleností z hlubokého vesmíru od Země.
Druh constellation-design používá tentýž katalog ke stavbě konstelací kolem kteréhokoli z těchto těles (CONSTELLATION-DESIGN.md).
Kód: src/body.rs (katalog a jeho konstanty), src/ephem.rs (analytické efemeridy), src/ephem_provider.rs (AnalyticSolarSystem, poskytovatel, který čtou oba druhy), src/solar_system.rs a src/body_pnt.rs (druhy) a src/radiometric.rs (světelný čas, obousměrná vzdálenost a Shapirovo zpoždění). Testy: tests/solar_system_horizons_reference.rs a jednotkové testy každého modulu.
Katalog#
Osmnáct těles: Slunce, osm planet, Pluto, Měsíc, Phobos, Deimos, čtyři Galileiho měsíce (Io, Europa, Ganymed, Callisto) a Titan. Názvy se porovnávají bez ohledu na velikost písmen. U každého nese src/body.rs gravitační parametr GM, rovníkový a objemový střední poloměr, druhou zonální harmonickou J2 a její referenční poloměr, je-li publikován, a model pólu a nultého poledníku Mezinárodní astronomické unie (IAU) (siderická perioda rotace, záporná pro retrográdní rotátor). Každá hodnota cituje svůj zdroj v kódu.
Odkud se berou polohy#
| Tělesa | Model | Popisek |
|---|---|---|
| Merkur až Saturn a Země, z tabulky 1 (1800 n. l. až 2050 n. l.) | Keplerovské elementy Jet Propulsion Laboratory (JPL) od Standishe a Williamse, https://ssd.jpl.nasa.gov/planets/approx_pos.html | VALIDATED |
| Všech osm planet z tabulek 2a/2b (3000 př. n. l. až 3000 n. l.) | dlouhorozsahové elementy téže stránky | VALIDATED |
| Uran a Neptun z tabulky 1 | jako výše | MODELLED |
| Pluto | řádek tabulky 1 z roku 1992 (pouze 1800 n. l. až 2050 n. l.; současná stránka jej odstranila a neuvádí žádnou chybu) | MODELLED |
| Měsíc | lunární řada Montenbrucka a Gilla, s rozdělením barycentra Země–Měsíc | MODELLED |
| Phobos, Deimos, Galileiho měsíce, Titan | střední elementy JPL s rotačním modelem IAU | MODELLED |
table = "auto" (výchozí) bere tabulku 1 uvnitř 1800 n. l. až 2050 n. l. a tabulky 2a/2b mimo ni; table1 a table2 vynutí jednu z nich. Pluto mimo svou tabulku je chyba, nikoli extrapolace. Epocha je datum a čas ISO 8601 v koordinovaném světovém čase (UTC), převedený přes pozemský čas (TT) s přestupnými sekundami na barycentrický dynamický čas (TDB), nebo juliánské datum TDB zadané přímo pomocí epoch_jd_tdb.
Orákulem je JPL Horizons (https://ssd.jpl.nasa.gov/horizons/, Development Ephemeris DE441), s dotazovanými vektory uloženými v tests/fixtures/solar_system/. Řádek planety je VALIDATED, pokud zůstává do dvojnásobku vlastní nominální chyby stránky Standishe. Změřeno pomocí cargo test --test solar_system_horizons_reference -- --nocapture:
- Tabulka 1, Merkur až Saturn a barycentrum Země–Měsíc, 12 epoch od 1800 do 2049: nejhorší 1,87 násobku nominální chyby (vzdálenost Saturnu).
- Tabulky 2a/2b, všech osm planet, 15 epoch od asi 1000 př. n. l. do 2500 n. l.: nejhorší 1,71 násobku (vzdálenost Marsu).
- Uran a Neptun z tabulky 1 překračují údaje stránky vůči DE441: 2,04 a 5,16 násobku nominální chyby délky. Jsou zafixovány pod šestinásobkem a zůstávají MODELLED.
- Pluto: do 39,2 obloukových vteřin v délce a 1.14e9 m ve vzdálenosti.
- Měsíce, nejhorší úhel viděný z planety v letech 2000 až 2040: Phobos 5,65 stupně, Deimos 0,38, Io 0,40, Europa 1,63, Ganymed 0,22, Callisto 0,27, Titan 3,31. Geocentrický Měsíc: 0,046 stupně.
- Rychlosti planet: nejhorší relativní chyba 3.72e-3 rychlosti (MODELLED).
Měsíc a sedm měsíců jiných planet jsou změřeny se zafixovanými prahy, ale neexistuje publikovaná mez, proti níž by je bylo možné ověřit, takže jsou MODELLED.
Analytické efemeridy nepotřebují soubor jádra. Jádro JPL Development Ephemeris (polohy třídy DE) čtou pouze samostatné křížově validační crate v xval/, přes tentýž trait EphemerisProvider; hlavní crate na nich nezávisí.
solar-system#
kind = "solar-system"
epoch = "2030-01-01T00:00:00"
bodies = ["Earth", "Moon", "Mars", "Jupiter", "Europa"]
observer = "Mars"
[[links]]
from = "Europa"
to = "Earth"
Solar system at 2030-01-01T00:00:00 (JD 2462502.50080 TDB), 5 bodies, observer Mars
Standish Table 1 (1800 AD to 2050 AD)
Earth 0.9833 au lon 100.18 deg light time 1038.1 s [VALIDATED]
Moon 0.9815 au lon 100.28 deg light time 1037.8 s [MODELLED]
Mars 1.3814 au lon 337.83 deg observer [VALIDATED]
Jupiter 5.4235 au lon 222.19 deg light time 3068.4 s [VALIDATED]
Europa 5.4194 au lon 222.17 deg light time 3066.6 s [MODELLED]
link Europa -> Earth: one-way 2993.281 s, two-way 5986.612 s, Shapiro 33.7 us, Sun 50.0 deg
Vstupy: epoch (výchozí 2026-01-01T00:00:00) nebo epoch_jd_tdb; bodies (výchozí všech osmnáct); observer (výchozí Země); track_points na oběžnou dráhu (8 až 2000, výchozí 120); table; a libovolný počet [[links]], každý přijímaný v epoše.
Pro každé těleso výsledek uvádí jeho třídu a mateřské těleso, identifikátor NASA Navigation and Ancillary Information Facility (NAIF), heliocentrickou polohu a rychlost v mezinárodní nebeské referenční soustavě (ICRF, rovníková J2000) v metrech a metrech za sekundu, ekliptikální délku, šířku a vzdálenost, polohu vzhledem k mateřskému tělesu, oběžnou dobu, výše uvedené konstanty, pól a nultý poledník v epoše, nominální chybu Standishe, pokud existuje, jeho označení a řetězec metody a dráhovou stopu po jednom oběhu (heliocentrickou pro planetu, vztaženou k mateřskému tělesu pro měsíc; jediný bod pro Slunce). Spoj od pozorovatele a každý další spoj dávají:
- newtonovský jednosměrný světelný čas, řešený radiometrickým řešičem světelného času s pevným bodem, s vysílačem v jeho zpožděné poloze, a odpovídající jednosměrnou vzdálenost;
- obousměrný světelný čas a vzdálenost;
- Shapirovo zpoždění Slunce, uváděné zvlášť a nepřičítané;
- úhel odlehlosti od Slunce.
Světelný čas je VALIDATED vůči jednosměrnému světelnému času, který uvádí Horizons: Mars a Jupiter ke středu Země ve čtyřech epochách od 2000 do 2040, nejhorší chyba 0,070 s pro Mars proti prahu 0,207 s a 1,31 s pro Jupiter proti 4,04 s. Práh je dvojnásobek součtu chyb vzdáleností podle Standishe pro cíl a barycentrum Země–Měsíc, dělený rychlostí světla: světelný čas nemůže být lepší než polohy. Je to newtonovský geometrický světelný čas, nikoli relativistická nebo plazmaticky korigovaná pozorovatelná.
Přibalený scenarios/solar-system-tour.toml hlásí všech osmnáct těles v 2026-09-28T00:00:00 se stopami o 180 bodech a přidává spoje Mars–Jupiter (jednosměrně 2193,539 s), Saturn–Země (4212,176 s) a Europa–Jupiter (2,218 s).
body-pnt#
Uživatel navigován kolem tělesa zvoleného jménem (kterékoli těleso katalogu kromě Slunce a Země, které druh odmítá) pomocí dvou druhů měření:
- jednosměrné pseudovzdálenosti z navigační konstelace typu Walker delta kolem tělesa (
planeskrátsats_per_plane, mezirovinné fázováníphasing_f), létané jako dvoutělesové oběžné dráhy se sekulárním driftemJ2daného tělesa; hodiny uživatele jsou neznámé, takže tyto řádky nesou sloupec odchylky hodin; - volitelně obousměrná vzdálenost od středu Země (
[earth_link]), která nepotřebuje hodiny uživatele a uvádí se jako jednosměrná vzdálenost s vlastním šumem. Směr a vzdálenost Země pocházejí z analytických efemerid v každé epoše.
Přímá viditelnost je zablokována, prochází-li uvnitř středního poloměru tělesa (test tětivy druhu mars-pnt), a povrchový uživatel potřebuje také elevační masku. V každé epoše běh vytvoří geometrický faktor a faktor zhoršení přesnosti v poloze (GDOP, PDOP) samotné konstelace, formální jednosigmovou nejistotu polohy s řádkem Země a bez něj a řešení polohy Gaussovou–Newtonovou metodou nejmenších čtverců se seedem pro každou variantu, takže zpráva ukazuje, co spoj z hlubokého vesmíru přidává.
| Tabulka | Pole | Výchozí hodnota |
|---|---|---|
| nejvyšší úroveň | body |
Mars |
epoch / epoch_jd_tdb |
2027-02-19T00:00:00, opozice Marsu | |
duration_s, step_s |
86 400 s, 600 s | |
seed |
1 | |
table |
auto |
|
[user] |
kind |
orbiter (nebo surface) |
oběžnice: altitude_km, inclination_deg, raan_deg, u0_deg, eccentricity |
400 km, 75 stupňů, 0, 0, 0 | |
povrch: lat_deg, lon_deg, height_m |
0, 0, 0 | |
[constellation] |
planes, sats_per_plane, phasing_f |
3, 4, 1 |
altitude_km |
tři střední poloměry | |
inclination_deg |
60 stupňů | |
sigma_range_m |
1 m | |
mask_deg (povrchový uživatel) |
10 stupňů | |
[earth_link] |
enabled, sigma_range_m |
true, 1 m |
raan_deg je rektascenze výstupného uzlu v rovníkové soustavě tělesa a u0_deg argument šířky v epoše.
Dva přibalené scénáře, tak jak běží s kshana 0,36 (přenositelná matematika, na každé platformě stejná):
scenarios/mars-orbit-pnt.toml |
scenarios/europa-surface-pnt.toml |
|
|---|---|---|
| Uživatel | oběžnice, 300 km, 93 stupňů | povrch, 20 stupňů s. š., 60 stupňů v. d. |
| Relé | 12 ve 10 000 km, 60 stupňů | 12 ve 4500 km, 55 stupňů, maska 10 stupňů |
| Rozsah | jeden sol, 296 epoch | 306 822 s, 171 epoch |
| Světelný čas ze Země, jednosměrně / tam a zpět | 338,3 s / 676,6 s | 2182,9 s / 4365,8 s |
| Země v dohledu | 0,811 epoch | 0.439 |
| Dostupnost, pouze relé / se vzdáleností od Země | 1.000 / 1.000 | 0.480 / 0.713 |
| Střední PDOP | 1.375 | 5.360 |
| Efektivní chyba řešení, pouze relé / se vzdáleností od Země | 1,883 m / 1,629 m | 112,742 m / 86,499 m |
| Střední formální sigma, pouze relé / se vzdáleností od Země | 1,375 m / 1,304 m | 5,360 m / 4,239 m |
(RMS: efektivní hodnota.) Jedna epocha Europy (t = 16 200 s) leží na hraně dostupnosti, kde poslední bit vypočteného poloměru rozhoduje, zda se její řešení se vzdáleností od Země provede. Před 0,36 o tom rozhodovala matematická knihovna hostitele, takže tentýž scénář vypsal pro dvě hodnoty „se vzdáleností od Země“ 0,719 a 86,147 m na Linuxu x86-64 a 0,725 a 85,800 m na macOS arm64. Od 0,36 se každá transcendentní funkce počítá přenositelnou matematickou knihovnou, epocha se na každé platformě rozhodne stejně (nativně i ve WebAssembly vzniknou stejné bajty) a hodnoty jsou 0,713 a 86,499 m (docs/revisions/STUDIO15-portable-math-rebaseline.md). Kolem Europy vzdálenost od Země zvyšuje dostupnost z 0,480 na 0,713 epoch. Tam, kde Země nikdy nevystoupí nad okraj kotouče, spoj nic nepřidá: lander na 89,5 stupně j. š. na Měsíci pod slupkou relé o 12 družicích a 5000 km má Zemi v dohledu v 0 ze 145 epoch a jeho chyby jsou s tímto spojem i bez něj stejné.
MODELLED. Oběžné dráhy relé ignorují třetí tělesa (přitažlivost Jupiteru na relé kolem Europy není modelována), šum je gaussovský na uvedených úrovních a model měření je okamžitý, nikoli zpožděný o světelný čas. Co se kontroluje: perioda relé proti třetímu Keplerovu zákonu pro dané těleso, oběžnice udržující svůj poloměr a lander na povrchu, vzdálenost od Země, která formální nejistotu nikdy nezhorší, seedem řízené chyby řešení souhlasící s formální sigmou (efektivní hodnota chyby ku sigmě v [0,6, 1,5]) a deterministický běh. Nic z toho nejsou navigační data mise.
Druh ephemeris#
Navzdory názvu je ephemeris druh pro družici Země: jedna družice, ze dvouřádkové sady elementů (TLE) přes propagátor Simplified General Perturbations 4 (SGP4) nebo z analytické oběžné dráhy, na časové mřížce. V každém kroku vydává setrvačný stav (polohu a rychlost) v soustavě true equator, mean equinox (TEME) a v geocentrické nebeské referenční soustavě (GCRS), polohu vázanou k Zemi, podsatelitní bod ve World Geodetic System 1984 (WGS 84) a pro nepovinnou pozemní stanici azimut, elevaci, vzdálenost a rychlost změny vzdálenosti. eop_finals2000a přijímá text souboru finals2000A Mezinárodní služby rotace Země a referenčních systémů (IERS) pro UT1−UTC a pohyb pólu v každé epoše. Kód: src/ephemeris.rs.
$ kshana scenarios/ephemeris.toml
scenario 0d4dd01b3160 | sgp4 (TLE) | 559 samples | alt 419–434 km | |lat| ≤ 51.8° | speed 7653–7661 m/s | max el 25.7° peak Doppler 34.3 kHz
Nemodelováno#
- Relativistické členy světelného času nad rámec zvlášť uváděného Shapirova zpoždění a sluneční plazmatické zpoždění.
- Polohy lepší než přesnost podle Standishe a středních elementů uvedená výše; v hlavním crate není čtečka jádra.
- Poruchy od třetích těles u relé
body-pnta na draháchconstellation-design. - Terén na jakémkoli tělese: těleso je jeho střední koule.
- Exporty pro interoperabilitu: CZML, KML a GeoJSON popisují polohy vzhledem k Zemi, takže scénáře
solar-systemabody-pntžádný neexportují (INTEROP.md).
Reference#
- E. M. Standish a J. G. Williams, „Keplerian Elements for Approximate Positions of the Major Planets“, JPL Solar System Dynamics, https://ssd.jpl.nasa.gov/planets/approx_pos.html.
- O. Montenbruck a E. Gill, Satellite Orbits: Models, Methods and Applications, Springer, 2000, §3.3.2.
- B. A. Archinal a kol., „Report of the IAU Working Group on Cartographic Coordinates and Rotational Elements: 2015“, Celestial Mechanics and Dynamical Astronomy 130, 2018.
- JPL Horizons, https://ssd.jpl.nasa.gov/horizons/.