View Source SpaceDust.Bodies.Sun (Space Dust v0.3.0)

Solar body parameters and position calculations.

Provides functions to compute the Sun's position in various coordinate frames, including ECI (Earth-Centered Inertial) and heliocentric coordinates.

The algorithms are based on low-precision solar coordinates from the Astronomical Almanac (approximate accuracy ~0.01 degrees).

Summary

Functions

Calculate the Sun's apparent right ascension and declination.

Astronomical Unit in meters

Calculate the Sun's unit vector from Earth in ECI frame.

Calculate the distance from Earth to the Sun in meters.

Calculate the Sun's position in the Earth-Centered Inertial (ECI) frame.

Calculate the Sun's position in ECI frame using a UTC struct.

Sun's gravitational parameter in m^3/s^2

Solar radius in meters

Functions

apparent_position(epochUtc)

@spec apparent_position(DateTime.t()) :: {float(), float()}

Calculate the Sun's apparent right ascension and declination.

Parameters

  • epochUtc - DateTime in UTC

Returns

  • {right_ascension, declination} - tuple of angles in radians

au()

Astronomical Unit in meters

direction(epochUtc)

@spec direction(DateTime.t()) :: SpaceDust.Math.Vector.vector()

Calculate the Sun's unit vector from Earth in ECI frame.

Parameters

  • epochUtc - DateTime in UTC

Returns

  • %Vector3D{} - Unit vector pointing from Earth to Sun

distance(epochUtc)

@spec distance(DateTime.t()) :: float()

Calculate the distance from Earth to the Sun in meters.

Parameters

  • epochUtc - DateTime in UTC

Returns

  • Distance in meters

eci_position(epochUtc)

@spec eci_position(DateTime.t()) :: SpaceDust.Math.Vector.vector()

Calculate the Sun's position in the Earth-Centered Inertial (ECI) frame.

Uses the low-precision solar coordinates from the Astronomical Almanac. Position is returned in meters.

Parameters

  • epochUtc - DateTime in UTC

Returns

  • %Vector3D{} - Sun position in ECI frame (meters)

Example

iex> SpaceDust.Bodies.Sun.eci_position(~U[2024-01-01 12:00:00Z])

eci_position_utc(utc)

@spec eci_position_utc(SpaceDust.Time.UTC.t()) :: SpaceDust.Math.Vector.vector()

Calculate the Sun's position in ECI frame using a UTC struct.

Parameters

  • utc - %SpaceDust.Time.UTC{} struct

Returns

  • %Vector3D{} - Sun position in ECI frame (meters)

mu()

Sun's gravitational parameter in m^3/s^2

radius()

Solar radius in meters