use crate::math::Vec3;
use sgp4::{Constants, Elements};
#[derive(Debug)]
pub struct PredictPosition {
pub time: f64,
pub decayed: bool,
pub position: Vec3,
pub velocity: Vec3,
pub latitude: f64,
pub longitude: f64,
pub altitude: f64,
pub footprint: f64,
pub eclipsed: bool,
pub eclipse_depth: f64,
pub revolutions: f64,
}
#[derive(Debug)]
pub struct PredictObserver {
pub name: String,
pub latitude: f64,
pub longitude: f64,
pub altitude: f64,
pub min_elevation: f64,
}
#[derive(Debug)]
pub struct PredictObservation {
pub time: f64,
pub azimuth: f64,
pub azimuth_rate: f64,
pub elevation: f64,
pub elevation_rate: f64,
pub range: f64,
pub range_x: f64,
pub range_y: f64,
pub range_z: f64,
pub range_rate: f64,
pub revolutions: f64,
pub visible: bool,
}
#[derive(Debug)]
pub struct Pass {
pub aos: Option<PredictObservation>,
pub satellite_position_at_aos: Option<PredictPosition>,
pub los: Option<PredictObservation>,
pub satellite_position_at_los: Option<PredictPosition>,
pub max_elevation: Option<f64>,
}
#[derive(Debug)]
pub struct Passes {
pub passes: Vec<Pass>,
}
pub struct ObserverElements<'a> {
pub observer: &'a PredictObserver,
pub elements: &'a Elements,
pub constants: &'a Constants,
}