starfall/astronomy/close_binary_star/math/barycenter/
mod.rs

1#[named]
2pub fn get_average_distances_from_barycenter(
3  average_separation: f64,
4  primary_mass: f64,
5  secondary_mass: f64,
6) -> (f64, f64) {
7  trace_enter!();
8  trace_var!(average_separation);
9  trace_var!(primary_mass);
10  trace_var!(secondary_mass);
11  let combined_mass = primary_mass + secondary_mass;
12  trace_var!(combined_mass);
13  let d1 = average_separation * (secondary_mass / combined_mass);
14  let d2 = average_separation * (primary_mass / combined_mass);
15  let result = (d1, d2);
16  trace_var!(result);
17  trace_exit!();
18  result
19}
20
21#[named]
22pub fn get_minimum_distances_from_barycenter(
23  average_separation: f64,
24  primary_mass: f64,
25  secondary_mass: f64,
26  orbital_eccentricity: f64,
27) -> (f64, f64) {
28  trace_enter!();
29  trace_var!(average_separation);
30  trace_var!(primary_mass);
31  trace_var!(secondary_mass);
32  trace_var!(orbital_eccentricity);
33  let combined_mass = primary_mass + secondary_mass;
34  trace_var!(combined_mass);
35  let average_distances = get_average_distances_from_barycenter(average_separation, primary_mass, secondary_mass);
36  let d1 = average_distances.0 * (1.0 - orbital_eccentricity);
37  let d2 = average_distances.1 * (1.0 - orbital_eccentricity);
38  let result = (d1, d2);
39  trace_var!(result);
40  trace_exit!();
41  result
42}
43
44#[named]
45pub fn get_maximum_distances_from_barycenter(
46  average_separation: f64,
47  primary_mass: f64,
48  secondary_mass: f64,
49  orbital_eccentricity: f64,
50) -> (f64, f64) {
51  trace_enter!();
52  trace_var!(average_separation);
53  trace_var!(primary_mass);
54  trace_var!(secondary_mass);
55  trace_var!(orbital_eccentricity);
56  let combined_mass = primary_mass + secondary_mass;
57  trace_var!(combined_mass);
58  let average_distances = get_average_distances_from_barycenter(average_separation, primary_mass, secondary_mass);
59  let d1 = average_distances.0 * (1.0 + orbital_eccentricity);
60  let d2 = average_distances.1 * (1.0 + orbital_eccentricity);
61  let result = (d1, d2);
62  trace_var!(result);
63  trace_exit!();
64  result
65}