Skip to content

Celestial Bodies

Celestial body definitions including physical properties and rotational elements.

Supported Bodies

Lox supports the standard NAIF/SPICE body identifiers for:

  • Planets (Mercury through Neptune)
  • Planetary barycenters
  • Natural satellites (major moons)
  • The Sun
  • Solar system barycenter

Quick Example

import lox_space as lox

# Create by name or ID
earth = lox.Origin("Earth")
moon = lox.Origin("Moon")
mars = lox.Origin(499)  # NAIF ID

# Access properties
print(f"Earth radius: {earth.mean_radius():.1f} km")
print(f"Earth GM: {earth.gravitational_parameter():.6e} km³/s²")

# Rotational elements at a given epoch
et = 0.0  # Ephemeris time (seconds from J2000)
ra, dec, w = earth.rotational_elements(et)

Origin

Represents a celestial body (planet, moon, barycenter, etc.).

Origin objects represent celestial bodies using NAIF/SPICE identifiers. They provide access to physical properties such as gravitational parameters, radii, and rotational elements.

Parameters:

  • origin

    Body name (e.g., "Earth", "Moon") or NAIF ID (e.g., 399 for Earth).

Raises:

  • ValueError

    If the origin name or ID is not recognized.

  • TypeError

    If the argument is neither a string nor an integer.

Examples:

>>> earth = lox.Origin("Earth")
>>> moon = lox.Origin("Moon")
>>> mars = lox.Origin(499)  # NAIF ID

Methods:

declination

declination(et: float) -> float

Return the declination of the pole in radians.

declination_rate

declination_rate(et: float) -> float

Return the rate of change of declination in radians/second.

equatorial_radius

equatorial_radius() -> float

Return the equatorial radius in km.

gravitational_parameter

gravitational_parameter() -> float

Return the gravitational parameter (GM) in km³/s².

id

id() -> int

Return the NAIF ID of this body.

mean_radius

mean_radius() -> float

Return the mean radius in km.

name

name() -> str

Return the name of this body.

polar_radius

polar_radius() -> float

Return the polar radius in km.

radii

radii() -> tuple[float, float, float]

Return the triaxial radii (x, y, z) in km.

right_ascension

right_ascension(et: float) -> float

Return the right ascension of the pole in radians.

right_ascension_rate

right_ascension_rate(et: float) -> float

Return the rate of change of right ascension in radians/second.

rotation_angle

rotation_angle(et: float) -> float

Return the rotation angle (prime meridian) in radians.

rotation_rate

rotation_rate(et: float) -> float

Return the rotation rate in radians/second.

rotational_element_rates

rotational_element_rates(et: float) -> tuple[float, float, float]

Return rotational element rates in radians/second.

rotational_elements

rotational_elements(et: float) -> tuple[float, float, float]

Return rotational elements (right ascension, declination, rotation angle) in radians.