Skip to main content

practical_astronomy_rust/
binarydata.rs

1/// Info about a binary system:
2/// * `name` -- Name of binary system.
3/// * `period` -- Period of the orbit.
4/// * `epoch_peri` -- Epoch of the perihelion.
5/// * `long_peri` -- Longitude of the perihelion.
6/// * `ecc` -- Eccentricity of the orbit.
7/// * `axis` -- Semi-major axis of the orbit.
8/// * `incl` -- Orbital inclination.
9/// * `pa_node` -- Position angle of the ascending node.
10pub struct BinaryInfo {
11    pub name: String,
12    pub period: f64,
13    pub epoch_peri: f64,
14    pub long_peri: f64,
15    pub ecc: f64,
16    pub axis: f64,
17    pub incl: f64,
18    pub pa_node: f64,
19}
20
21/// Retrieve info about a binary system.
22///
23/// ## Returns
24/// * BinaryInfo structure
25/// * status
26pub fn get_binary_info_vector(binary_name: String) -> (BinaryInfo, String) {
27    let mut binary_info_vector: Vec<BinaryInfo> = Vec::new();
28
29    binary_info_vector.push(BinaryInfo {
30        name: "eta-Cor".to_string(),
31        period: 41.623,
32        epoch_peri: 1934.008,
33        long_peri: 219.907,
34        ecc: 0.2763,
35        axis: 0.907,
36        incl: 59.025,
37        pa_node: 23.717,
38    });
39
40    binary_info_vector.push(BinaryInfo {
41        name: "gamma-Vir".to_string(),
42        period: 171.37,
43        epoch_peri: 1836.433,
44        long_peri: 252.88,
45        ecc: 0.8808,
46        axis: 3.746,
47        incl: 146.05,
48        pa_node: 31.78,
49    });
50
51    binary_info_vector.push(BinaryInfo {
52        name: "eta-Cas".to_string(),
53        period: 480.0,
54        epoch_peri: 1889.6,
55        long_peri: 268.59,
56        ecc: 0.497,
57        axis: 11.9939,
58        incl: 34.76,
59        pa_node: 278.42,
60    });
61
62    binary_info_vector.push(BinaryInfo {
63        name: "zeta-Ori".to_string(),
64        period: 1508.6,
65        epoch_peri: 2070.6,
66        long_peri: 47.3,
67        ecc: 0.07,
68        axis: 2.728,
69        incl: 72.0,
70        pa_node: 155.5,
71    });
72
73    binary_info_vector.push(BinaryInfo {
74        name: "alpha-CMa".to_string(),
75        period: 50.09,
76        epoch_peri: 1894.13,
77        long_peri: 147.27,
78        ecc: 0.5923,
79        axis: 7.5,
80        incl: 136.53,
81        pa_node: 44.57,
82    });
83
84    binary_info_vector.push(BinaryInfo {
85        name: "delta-Gem".to_string(),
86        period: 1200.0,
87        epoch_peri: 1437.0,
88        long_peri: 57.19,
89        ecc: 0.11,
90        axis: 6.9753,
91        incl: 63.28,
92        pa_node: 18.38,
93    });
94
95    binary_info_vector.push(BinaryInfo {
96        name: "alpha-Gem".to_string(),
97        period: 420.07,
98        epoch_peri: 1965.3,
99        long_peri: 261.43,
100        ecc: 0.33,
101        axis: 6.295,
102        incl: 115.94,
103        pa_node: 40.47,
104    });
105
106    binary_info_vector.push(BinaryInfo {
107        name: "aplah-CMi".to_string(),
108        period: 40.65,
109        epoch_peri: 1927.6,
110        long_peri: 269.8,
111        ecc: 0.4,
112        axis: 4.548,
113        incl: 35.7,
114        pa_node: 284.3,
115    });
116
117    binary_info_vector.push(BinaryInfo {
118        name: "alpha-Cen".to_string(),
119        period: 79.92,
120        epoch_peri: 1955.56,
121        long_peri: 231.56,
122        ecc: 0.516,
123        axis: 17.583,
124        incl: 79.24,
125        pa_node: 204.868,
126    });
127
128    binary_info_vector.push(BinaryInfo {
129        name: "alpha Sco".to_string(),
130        period: 900.0,
131        epoch_peri: 1889.0,
132        long_peri: 0.0,
133        ecc: 0.0,
134        axis: 3.21,
135        incl: 86.3,
136        pa_node: 273.0,
137    });
138
139    for i in binary_info_vector {
140        if i.name == binary_name {
141            return (i, "OK".to_string());
142        }
143    }
144
145    return (
146        BinaryInfo {
147            name: binary_name,
148            period: 0.0,
149            epoch_peri: 0.0,
150            long_peri: 0.0,
151            ecc: 0.0,
152            axis: 0.0,
153            incl: 0.0,
154            pa_node: 0.0,
155        },
156        "NotFound".to_string(),
157    );
158}