fn main() -> anyhow::Result<()> { let elements: sgp4::Elements = serde_json::from_str( r#"{ "OBJECT_NAME": "ISS (ZARYA)", "OBJECT_ID": "1998-067A", "EPOCH": "2020-07-12T21:16:01.000416", "MEAN_MOTION": 15.49507896, "ECCENTRICITY": 0.0001413, "INCLINATION": 51.6461, "RA_OF_ASC_NODE": 221.2784, "ARG_OF_PERICENTER": 89.1723, "MEAN_ANOMALY": 280.4612, "EPHEMERIS_TYPE": 0, "CLASSIFICATION_TYPE": "U", "NORAD_CAT_ID": 25544, "ELEMENT_SET_NO": 999, "REV_AT_EPOCH": 23600, "BSTAR": -3.1515e-5, "MEAN_MOTION_DOT": -2.218e-5, "MEAN_MOTION_DDOT": 0 }"#, )?; let constants = sgp4::Constants::from_elements(&elements)?; for hours in 0..24 { println!("t = {} min", hours * 60); let prediction = constants.propagate(sgp4::MinutesSinceEpoch((hours * 60) as f64))?; println!(" r = {:?} km", prediction.position); println!(" ṙ = {:?} km.s⁻¹", prediction.velocity); } Ok(()) }