# `Angelus.Ephemeris.BodyPosition`
[🔗](https://github.com/MonsignorEduardo/angelus/blob/v0.0.2/lib/angelus/ephemeris/body_position.ex#L1)

Position of a supported astrological body in the v0.1 public API.

# `t`

```elixir
@type t() :: %Angelus.Ephemeris.BodyPosition{
  body: atom(),
  distance_au: float() | nil,
  latitude: float() | nil,
  light_time_seconds: float() | nil,
  longitude: float() | nil,
  metadata: map() | nil,
  position_km: {float(), float(), float()} | nil,
  spice_id: non_neg_integer() | nil,
  spice_target: String.t() | nil,
  target_kind: :body_center | :lunar_node | :lunar_apogee | :minor_planet | nil,
  velocity_km_s: {float(), float(), float()} | nil
}
```

Geocentric ecliptic position of a celestial body.

Fields:

* `:body` — the body atom (e.g. `:sun`, `:moon`).
* `:spice_target` — SPICE target name string (e.g. `"SUN"`).
* `:spice_id` — SPICE integer ID for the target.
* `:target_kind` — one of `:body_center`, `:lunar_node`, `:lunar_apogee`,
  or `:minor_planet`.
* `:position_km` — `{x, y, z}` position vector in km (ECLIPJ2000 frame).
* `:velocity_km_s` — `{vx, vy, vz}` velocity vector in km/s.
* `:light_time_seconds` — one-way light travel time from target to observer.
* `:longitude` — geocentric ecliptic longitude in degrees `[0, 360)`.
* `:latitude` — geocentric ecliptic latitude in degrees.
* `:distance_au` — distance from Earth to the body in astronomical units.
* `:metadata` — internal metadata map (engine, kernels, SPICE settings, etc.).

---

*Consult [api-reference.md](api-reference.md) for complete listing*
