Celestial Bodies Configuration
Configuration file format for solar system bodies.
Authoritative Data Source
All celestial body property values (mass, radius, color) are defined in tick-processor.md.
This file documents the configuration file format only. Do not duplicate property values here.
Format
YAML configuration file: config/celestial-bodies.yaml
bodies:
- name: Sun
type: star
mass: 1.989e30 # kg - see tick-processor.md for exact value
radius: 6.960e8 # m
color: "#FDB813" # hex color for rendering
parent: null # center of system
- name: Earth
type: planet
mass: 5.972e24
radius: 6.371e6
color: "#6B93D6"
parent: Sun
- name: Luna
type: moon
mass: 7.342e22
radius: 1.737e6
color: "#C0C0C0"
parent: Earth
Body Properties
| Property | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Unique identifier |
| type | enum | Yes | star, planet, moon, asteroid |
| mass | float | Yes | Mass in kg |
| radius | float | Yes | Mean radius in meters |
| color | string | Yes | Hex color for MVP rendering |
| parent | string | No | Parent body for moons (null for Sun) |
Initial Release Bodies
The initial release includes 31 bodies:
- 1 star (Sun)
- 8 planets (Mercury through Neptune)
- 22 moons
See tick-processor.md Celestial Body Properties for the complete list with all property values.
Rotation Properties
| Property | Type | Description |
|---|---|---|
| rotation_period | float | Sidereal rotation period in seconds (negative = retrograde) |
| axial_tilt | float | Obliquity in degrees (tilt of spin axis from orbital plane) |
Rotation and axial tilt are rendered visually. See web-client.md Body Rotation for rendering details.
Spin Axes
Planet spin axis directions are defined as unit vectors in ecliptic (physics frame) coordinates, computed from IAU pole directions (right ascension, declination) converted through the equatorial→ecliptic rotation (obliquity ε = 23.4393°).
These are stored in the web client’s bodyConfig.js as BODY_SPIN_AXES and used for:
- Visual axial tilt orientation (cockpit and map views)
- Orbital inclination calculations (
orbital.js)
| Body | Spin Axis (ecliptic) | Notes |
|---|---|---|
| Sun | [0.1224, -0.0310, 0.9920] | 7.25° tilt |
| Mercury | [0.0914, -0.0815, 0.9925] | Nearly upright |
| Venus | [0.0187, 0.0109, 0.9998] | ~177° (retrograde, nearly inverted) |
| Earth | [0.0000, 0.3978, 0.9175] | 23.44° tilt |
| Mars | [0.4461, -0.0555, 0.8933] | 25.19° tilt |
| Jupiter | [-0.0146, -0.0358, 0.9993] | 3.13° tilt |
| Saturn | [0.0855, 0.4624, 0.8825] | 26.73° tilt |
| Uranus | [-0.2120, -0.9680, 0.1344] | 97.77° (sideways) |
| Neptune | [0.3559, -0.3068, 0.8827] | 28.32° tilt |
| Luna | [0.0220, 0.0154, 0.9996] | 1.54° from ecliptic pole |
Moons inherit their parent planet’s spin axis for orbital plane alignment. Moon ephemeris positions and velocities are rotated so that their orbital angular momentum vectors align with the parent’s spin axis (or anti-align for retrograde orbits like Triton).
Exception: Luna. Luna’s orbit is inclined ~5.1° to the ecliptic plane rather than to Earth’s equatorial plane, so it does not inherit Earth’s spin axis. Luna has its own explicit spin axis entry in BODY_SPIN_AXES, nearly aligned with the ecliptic pole.
Ephemeris
Initial positions and velocities are loaded from JPL Horizons at server start based on configured start_date.
Python library: astroquery.jplhorizons or skyfield
See services.md Ephemeris Fallback for fallback behavior when JPL is unavailable.