use crate::config::parameters::PI;
pub fn absolute_total_magnitude(
apparent_mag: f64,
delta_au: f64,
r_au: f64,
activity_index: f64,
) -> f64 {
apparent_mag
- 5.0 * delta_au.max(0.001).log10()
- 2.5 * activity_index * r_au.max(0.001).log10()
}
pub fn apparent_total_magnitude(h_t: f64, delta_au: f64, r_au: f64, activity_index: f64) -> f64 {
h_t + 5.0 * delta_au.max(0.001).log10() + 2.5 * activity_index * r_au.max(0.001).log10()
}
pub fn nuclear_magnitude(nucleus_radius: f64, albedo: f64) -> f64 {
let au_m = 1.496e11;
let m_sun = -26.74;
let cross_section = PI * nucleus_radius * nucleus_radius;
let reflected = albedo * cross_section / (PI * au_m * au_m);
if reflected < 1.0e-50 {
return 99.0;
}
m_sun - 2.5 * reflected.log10()
}
pub fn phase_correction(phase_angle_deg: f64, beta_coeff: f64) -> f64 {
beta_coeff * phase_angle_deg / 100.0
}
pub fn coma_cross_section(afrho_cm: f64, aperture_m: f64) -> f64 {
let aperture_cm = aperture_m * 100.0;
if aperture_cm < 0.01 {
return 0.0;
}
PI * aperture_m * aperture_m * (afrho_cm / aperture_cm)
}
pub fn color_index_bv(dust_to_gas: f64) -> f64 {
let solar_bv = 0.65;
let reddening = 0.1 * (dust_to_gas / (1.0 + dust_to_gas));
solar_bv + reddening
}