//! Earth-Centered Inertial (ECI) coordinate frame.
//!
//! The TEME (True Equator Mean Equinox) frame used by SGP4.
//! Position and velocity are expressed in kilometers and km/s.

use crate::coordinate::vec3::Vec3;

/// Witness type for the ECI frame, used as a `Category` object.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct Eci;

/// Position in ECI coordinates (km).
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct EciPosition(Vec3);

impl EciPosition {
    #[must_use]
    pub fn new(v: Vec3) -> Self {
        Self(v)
    }

    #[must_use]
    pub fn vec3(self) -> Vec3 {
        self.0
    }
}

/// Velocity in ECI coordinates (km/s).
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct EciVelocity(Vec3);

impl EciVelocity {
    #[must_use]
    pub fn new(v: Vec3) -> Self {
        Self(v)
    }

    #[must_use]
    pub fn vec3(self) -> Vec3 {
        self.0
    }
}
