use crate::prelude::*;

pub fn fresnel_real(cos_theta_in: Float, nu1: Float, nu2: Float) -> Float {
    let nu_rel = nu1 / nu2;
    let cos_theta_tr = Float::sqrt(1.0 - nu_rel * nu_rel * (1.0 - cos_theta_in * cos_theta_in));

    let rs = ((nu1 * cos_theta_in - nu2 * cos_theta_tr)
        / (nu1 * cos_theta_in + nu2 * cos_theta_tr))
        .powi(2);
    let rp = ((nu1 * cos_theta_tr - nu2 * cos_theta_in)
        / (nu1 * cos_theta_tr + nu2 * cos_theta_in))
        .powi(2);

    0.5 * (rs + rp)
}
