Defines the circular equatorial orbit model.

EquatorialOrbit

@dataclass(frozen=True)
class EquatorialOrbit:
    r: float            # Orbital radius [m]
    mu: float = 3.986e14  # Earth gravitational parameter
    nu_initial: float = 0.0  # Initial true anomaly [rad]

Properties

  • n - Mean motion [rad/s]: \(n = \sqrt{\mu/r^3}\)
  • period - Orbital period [s]: \(T = 2\pi/n\)

Methods

get_state(t)

Get satellite state at time \(t\).

def get_state(self, t: float) -> OrbitState:

Returns: Position and velocity in ECI frame.

\[ \mathbf{r}(t) = r \begin{bmatrix} \cos\nu \\ \sin\nu \\ 0 \end{bmatrix} \]

Where \(\nu = \nu_0 + n \cdot t\).

get_lvlh_basis(t)

Get LVLH basis vectors at time \(t\).

def get_lvlh_basis(self, t: float) -> tuple[np.ndarray, np.ndarray, np.ndarray]:

Returns: (x_lvlh, y_lvlh, z_lvlh) in ECI coordinates.

For equatorial orbit:

\[ \mathbf{x}_L = \begin{bmatrix} -\sin\nu \\ \cos\nu \\ 0 \end{bmatrix}, \quad \mathbf{y}_L = \begin{bmatrix} 0 \\ 0 \\ -1 \end{bmatrix}, \quad \mathbf{z}_L = \begin{bmatrix} -\cos\nu \\ -\sin\nu \\ 0 \end{bmatrix} \]