use crate::errors::RocheError;
use crate::{Etype, Star, Vec3};
use crate::{ingress_egress, sphere_eclipse};
pub fn star_eclipse(q: f64, spin:f64, r: f64, ffac: f64, iangle: f64, posn: &Vec3, delta: f64, roche: bool, star: Star, eclipses: &mut Etype) -> Result<(), RocheError> {
let ri = iangle.to_radians();
let (sini, cosi) = ri.sin_cos();
let cofm = match star {
Star::Primary => Vec3::cofm1(),
Star::Secondary => Vec3::cofm2(),
};
let mut lam1: f64 = 0.0;
let mut lam2: f64 = 0.0;
let mut ingress: f64 = 0.0;
let mut egress: f64 = 0.0;
if (roche && ingress_egress(q, star, spin, ffac, iangle, delta, &posn, &mut ingress, &mut egress)?) ||
(!roche && sphere_eclipse(cosi, sini, &posn, &cofm, r, &mut ingress, &mut egress, &mut lam1, &mut lam2)) {
eclipses.push((ingress, egress));
}
Ok(())
}