Solsystemet och positionering kring andra himlakroppar
Två scenariotyper fungerar bortom systemet jorden–månen:
solar-systemredovisar varje kropp i katalogen vid en epok: position och hastighet, fysikaliska konstanter, ljustid och avstånd från en observatörskropp, samt ett banspår.body-pntplacerar en navigationsanvändare (en omloppare eller en ytlandare) kring vilken katalogkropp som helst utom Solen och Jorden, med en lokal navigationskonstellation och ett valfritt djuprymdsavstånd från Jorden.
Typen constellation-design använder samma katalog för att bygga konstellationer kring någon av dessa kroppar (CONSTELLATION-DESIGN.md).
Kod: src/body.rs (katalogen och dess konstanter), src/ephem.rs (de analytiska efemeriderna), src/ephem_provider.rs (AnalyticSolarSystem, leverantören som båda typerna läser), src/solar_system.rs och src/body_pnt.rs (typerna) och src/radiometric.rs (ljustid, tvåvägsavstånd och Shapiro-fördröjningen). Tester: tests/solar_system_horizons_reference.rs och enhetstesterna för varje modul.
Katalogen#
Arton kroppar: Solen, de åtta planeterna, Pluto, Månen, Phobos, Deimos, de fyra galileiska månarna (Io, Europa, Ganymedes, Callisto) och Titan. Namn matchas utan hänsyn till skiftläge. För var och en bär src/body.rs gravitationsparametern GM, ekvatorial och volymetrisk medelradie, den andra zonala harmoniska J2 och dess referensradie där en är publicerad, samt International Astronomical Union (IAU) modell för pol och nollmeridian (siderisk rotationsperiod, negativ för en retrograd rotator). Varje värde anger sin källa i koden.
Varifrån positionerna kommer#
| Kroppar | Modell | Etikett |
|---|---|---|
| Merkurius till Saturnus och Jorden, från tabell 1 (1800 e.Kr. till 2050 e.Kr.) | Keplerelement från Jet Propulsion Laboratory (JPL) av Standish och Williams, https://ssd.jpl.nasa.gov/planets/approx_pos.html | VALIDATED |
| Alla åtta planeter från tabellerna 2a/2b (3000 f.Kr. till 3000 e.Kr.) | samma sidas långtidselement | VALIDATED |
| Uranus och Neptunus från tabell 1 | som ovan | MODELLED |
| Pluto | raden i tabell 1 från 1992 (bara 1800 e.Kr. till 2050 e.Kr.; den nuvarande sidan har tagit bort den och anger inget fel) | MODELLED |
| Månen | Montenbruck och Gills månserie, med delning av jord–måne-barycentret | MODELLED |
| Phobos, Deimos, de galileiska månarna, Titan | JPL:s medelelement med IAU:s rotationsmodell | MODELLED |
table = "auto" (standard) tar tabell 1 inom 1800 e.Kr. till 2050 e.Kr. och tabellerna 2a/2b utanför; table1 och table2 tvingar fram en. Pluto utanför sin tabell är ett fel, inte en extrapolering. Epoken är ett datum och en tid enligt ISO 8601 i Coordinated Universal Time (UTC), omvandlad via Terrestrial Time (TT) med skottsekunderna till Barycentric Dynamical Time (TDB), eller ett Julianskt datum i TDB angivet direkt med epoch_jd_tdb.
Den oberoende referensen är JPL Horizons (https://ssd.jpl.nasa.gov/horizons/, Development Ephemeris DE441), med de efterfrågade vektorerna incheckade under tests/fixtures/solar_system/. En planetrad är VALIDATED där den håller sig inom två gånger Standish-sidans eget nominella fel. Uppmätt av cargo test --test solar_system_horizons_reference -- --nocapture:
- Tabell 1, Merkurius till Saturnus och jord–måne-barycentret, 12 epoker från 1800 till 2049: sämst 1,87 gånger det nominella felet (Saturnus avstånd).
- Tabellerna 2a/2b, alla åtta planeter, 15 epoker från cirka 1000 f.Kr. till 2500 e.Kr.: sämst 1,71 gånger (Mars avstånd).
- Uranus och Neptunus i tabell 1 överskrider sidans värden mot DE441: 2,04 och 5,16 gånger det nominella longitudfelet. De är fastlåsta under sex gånger och förblir MODELLED.
- Pluto: inom 39,2 bågsekunder i longitud och 1.14e9 m i avstånd.
- Månar, sämsta vinkel sedd från planeten över 2000 till 2040: Phobos 5,65 grader, Deimos 0,38, Io 0,40, Europa 1,63, Ganymedes 0,22, Callisto 0,27, Titan 3,31. Den geocentriska Månen: 0,046 grader.
- Planethastigheter: sämsta relativa fel 3.72e-3 av farten (MODELLED).
Månen och de sju månarna är mätta med fastlåsta trösklar, men det finns ingen publicerad gräns att validera dem mot, så de är MODELLED.
De analytiska efemeriderna behöver ingen kernelfil. En JPL Development Ephemeris-kernel (positioner av DE-klass) läses bara av de separata korsvalideringscraten under xval/, genom samma trait EphemerisProvider; huvudcraten är inte beroende av dem.
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
Indata: epoch (standard 2026-01-01T00:00:00) eller epoch_jd_tdb; bodies (standard alla arton); observer (standard Jorden); track_points per bana (8 till 2000, standard 120); table; och valfritt antal [[links]], var och en mottagen vid epoken.
Per kropp ger resultatet dess klass och moder, identifieraren från NASA Navigation and Ancillary Information Facility (NAIF), den heliocentriska positionen och hastigheten i International Celestial Reference Frame (ICRF, ekvatoriell J2000) i meter och meter per sekund, ekliptikal longitud, latitud och avstånd, positionen relativt sin moder, omloppsperioden, konstanterna ovan, polen och nollmeridianen vid epoken, Standishs nominella fel där ett finns, dess etikett och metodsträng, samt ett banspår över ett varv (heliocentriskt för en planet, centrerat på modern för en måne; en enda punkt för Solen). Länken från observatören, och varje extra länk, ger:
- den newtonska enkelriktade ljustiden, löst av den radiometriska fixpunktslösaren för ljustid med sändaren i sin retarderade position, och motsvarande enkelriktade avstånd;
- tvåvägsljustiden och avståndet;
- Solens Shapiro-fördröjning, redovisad separat och inte tillagd;
- solseparationsvinkeln.
Ljustiden är VALIDATED mot den enkelriktade ljustid som Horizons redovisar: Mars och Jupiter till Jordens centrum vid fyra epoker från 2000 till 2040, sämsta fel 0,070 s för Mars mot en tröskel på 0,207 s och 1,31 s för Jupiter mot 4,04 s. Tröskeln är två gånger summan av Standish-avståndsfelen för målet och jord–måne-barycentret, delat med ljusets hastighet: ljustiden kan inte vara bättre än positionerna. Det är den newtonska geometriska ljustiden, inte en relativistisk eller plasmakorrigerad observabel.
Den medföljande scenarios/solar-system-tour.toml redovisar alla arton kroppar vid 2026-09-28T00:00:00 med spår om 180 punkter, och lägger till länkarna Mars–Jupiter (enkelriktad 2193,539 s), Saturnus–Jorden (4212,176 s) och Europa–Jupiter (2,218 s).
body-pnt#
En användare navigerar kring en kropp vald med namn (vilken katalogkropp som helst utom Solen och Jorden, som typen avvisar) med två slags mätningar:
- enkelriktade pseudoavstånd från en Walker-delta-navigationskonstellation kring kroppen (
planesgångersats_per_plane, interplansfasningphasing_f), flugna som tvåkroppsbanor med kroppens egen sekulära driftJ2; användarklockan är okänd, så dessa rader bär en kolumn för klockbias; - eventuellt ett tvåvägsavstånd från Jordens centrum (
[earth_link]), som inte behöver någon användarklocka och redovisas som ett enkelriktat avstånd med eget brus. Jordens riktning och avstånd kommer från den analytiska efemeriden vid varje epok.
En siktlinje blockeras när den passerar innanför kroppens medelradie (kordatestet i typen mars-pnt), och en ytanvändare behöver också elevationsmasken. Vid varje epok bildar körningen de geometriska och positionsmässiga utspädningstalen (GDOP, PDOP) för enbart konstellationen, den formella ettsigma-positionsosäkerheten med och utan jordraden, och en seedad Gauss-Newton-minstakvadratpositionsbestämning åt vardera håll, så att rapporten visar vad djuprymdslänken tillför.
| Tabell | Fält | Standardvärde |
|---|---|---|
| toppnivå | body |
Mars |
epoch / epoch_jd_tdb |
2027-02-19T00:00:00, en Mars-opposition | |
duration_s, step_s |
86 400 s, 600 s | |
seed |
1 | |
table |
auto |
|
[user] |
kind |
orbiter (eller surface) |
omloppare: altitude_km, inclination_deg, raan_deg, u0_deg, eccentricity |
400 km, 75 deg, 0, 0, 0 | |
yta: lat_deg, lon_deg, height_m |
0, 0, 0 | |
[constellation] |
planes, sats_per_plane, phasing_f |
3, 4, 1 |
altitude_km |
tre medelradier | |
inclination_deg |
60 deg | |
sigma_range_m |
1 m | |
mask_deg (ytanvändare) |
10 deg | |
[earth_link] |
enabled, sigma_range_m |
true, 1 m |
raan_deg är rektascensionen för den uppstigande noden i kroppens ekvatorialsystem och u0_deg latitudargumentet vid epoken.
De två medföljande scenarierna, som de körs med kshana 0,36 (portabel matematik, densamma på varje plattform):
scenarios/mars-orbit-pnt.toml |
scenarios/europa-surface-pnt.toml |
|
|---|---|---|
| Användare | omloppare, 300 km, 93 deg | yta, 20 deg N, 60 deg Ö |
| Reläer | 12 på 10 000 km, 60 deg | 12 på 4500 km, 55 deg, 10 deg mask |
| Spann | ett marsdygn (sol), 296 epoker | 306 822 s, 171 epoker |
| Ljustid till Jorden, enkelriktad / tur och retur | 338,3 s / 676,6 s | 2182,9 s / 4365,8 s |
| Jorden i sikte | 0,811 av epokerna | 0.439 |
| Tillgänglighet, endast reläer / med jordavståndet | 1.000 / 1.000 | 0.480 / 0.713 |
| Median-PDOP | 1.375 | 5.360 |
| RMS-fel i positionsbestämningen, endast reläer / med jordavståndet | 1,883 m / 1,629 m | 112,742 m / 86,499 m |
| Formellt mediansigma, endast reläer / med jordavståndet | 1,375 m / 1,304 m | 5,360 m / 4,239 m |
(RMS: kvadratiskt medelvärde.) En Europa-epok (t = 16 200 s) ligger på tillgänglighetens gräns, där den sista biten i en beräknad radie avgör om dess positionsbestämning med jordavstånd görs. Före 0,36 avgjorde värdens matematikbibliotek det, så samma scenario skrev ut 0,719 och 86,147 m på Linux x86-64 och 0,725 och 85,800 m på macOS arm64 för de två siffrorna "med jordavstånd". Sedan 0,36 beräknas varje transcendent funktion av det portabla matematikbiblioteket, epoken avgörs på ett sätt på varje plattform (nativt och WebAssembly ger samma byte), och siffrorna är 0,713 och 86,499 m (docs/revisions/STUDIO15-portable-math-rebaseline.md). Kring Europa höjer jordavståndet tillgängligheten från 0,480 till 0,713 av epokerna. Där Jorden aldrig kommer fri från kanten (limben) tillför länken ingenting: en landare vid 89,5 deg S på Månen under ett reläskal med 12 satelliter och 5000 km har Jorden i sikte vid 0 av 145 epoker, och dess fel är desamma med och utan länken.
MODELLED. Reläbanorna ignorerar tredjekroppar (Jupiters drag på reläer kring Europa är inte modellerat), bruset är gaussiskt vid de angivna nivåerna och mätmodellen är ögonblicklig, inte ljustidsretarderad. Det som kontrolleras: reläets period mot Keplers tredje lag för kroppen, en omloppare som behåller sin radie och en landare på ytan, att jordavståndet aldrig försämrar den formella osäkerheten, att de seedade positionsfelen stämmer med det formella sigmat (kvadratiskt medelvärde av felet delat med sigma i [0,6, 1,5]), och en deterministisk körning. Inget av detta är ett uppdrags navigeringsdata.
Typen ephemeris#
Trots namnet är ephemeris en typ för jordsatelliter: en satellit, från en tvåradig elementuppsättning (TLE) via propagatorn Simplified General Perturbations 4 (SGP4) eller från en analytisk bana, över ett tidsraster. Vid varje steg ger den det inertiella tillståndet (position och hastighet) i systemet true equator, mean equinox (TEME) och i Geocentric Celestial Reference System (GCRS), den jordfasta positionen, subsatellitpunkten i World Geodetic System 1984 (WGS 84) och, för en valfri markstation, azimut, elevation, avstånd och avståndstakt. eop_finals2000a tar texten från en fil finals2000A från International Earth Rotation and Reference Systems Service (IERS) för UT1−UTC och polrörelse per epok. Kod: 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
Inte modellerat#
- Relativistiska ljustidstermer utöver den separat redovisade Shapiro-fördröjningen, och solplasmafördröjningen.
- Positioner bättre än Standish- och medelelementnoggrannheten som anges ovan; huvudcraten har ingen kernelläsare.
- Tredjekroppsstörningar på reläer i
body-pntoch på banor iconstellation-design. - Terräng på vilken kropp som helst: en kropp är sin medelsfär.
- Interoperabilitetsexporter: CZML, KML och GeoJSON beskriver positioner kring Jorden, så scenarierna
solar-systemochbody-pntexporterar ingen (INTEROP.md).
Referenser#
- E. M. Standish and 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 and E. Gill, Satellite Orbits: Models, Methods and Applications, Springer, 2000, §3.3.2.
- B. A. Archinal et al., "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/.