planetary_positions/
planetary_positions.rs1use rust_jpl::{Ephemeris, JulianDate};
6
7fn main() -> Result<(), Box<dyn std::error::Error>> {
8 println!("=== Planetary Positions Example ===\n");
9
10 let eph = Ephemeris::new("config.toml")?;
12
13 let dates = vec![
15 (2024, 1, 1, 0, 0, 0.0),
16 (2024, 6, 15, 12, 0, 0.0),
17 (2024, 12, 31, 23, 59, 59.0),
18 ];
19
20 let bodies = vec!["Sun", "Mercury", "Venus", "Earth", "Mars", "Jupiter"];
21
22 for (year, month, day, hour, minute, second) in dates {
23 let jd = JulianDate::from_calendar(year, month, day, hour, minute, second)?;
24 println!(
25 "Date: {}-{:02}-{:02} {:02}:{:02}:{:02} (JD: {:.6})",
26 year,
27 month,
28 day,
29 hour,
30 minute,
31 second as i32,
32 jd.as_f64()
33 );
34 println!("{}", "=".repeat(70));
35
36 for body_name in &bodies {
37 match eph.get_position(body_name, jd) {
38 Ok(pos) => {
39 println!(
40 " {:10} | X: {:12.6} | Y: {:12.6} | Z: {:12.6} | Distance: {:10.6} AU",
41 body_name,
42 pos.x,
43 pos.y,
44 pos.z,
45 pos.distance()
46 );
47 }
48 Err(e) => {
49 println!(" {:10} | Error: {}", body_name, e);
50 }
51 }
52 }
53 println!();
54 }
55
56 Ok(())
57}