suns 0.0.3

Sun celestial simulation crate for the MilkyWay SolarSystem workspace
Documentation
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct StellarMaterial {
    pub emission_color: [f32; 3],
    pub emission_intensity: f32,
    pub temperature_k: f32,
    pub opacity: f32,
}

impl StellarMaterial {
    pub fn photosphere() -> Self {
        Self {
            emission_color: [1.0, 0.95, 0.8],
            emission_intensity: 100.0,
            temperature_k: 5778.0,
            opacity: 1.0,
        }
    }

    pub fn chromosphere() -> Self {
        Self {
            emission_color: [1.0, 0.3, 0.2],
            emission_intensity: 0.5,
            temperature_k: 10000.0,
            opacity: 0.05,
        }
    }

    pub fn corona() -> Self {
        Self {
            emission_color: [0.9, 0.95, 1.0],
            emission_intensity: 0.01,
            temperature_k: 1_000_000.0,
            opacity: 0.002,
        }
    }

    pub fn sunspot() -> Self {
        Self {
            emission_color: [0.6, 0.3, 0.1],
            emission_intensity: 40.0,
            temperature_k: 3500.0,
            opacity: 1.0,
        }
    }

    pub fn prominence() -> Self {
        Self {
            emission_color: [1.0, 0.4, 0.3],
            emission_intensity: 2.0,
            temperature_k: 8000.0,
            opacity: 0.15,
        }
    }

    pub fn planck_peak_wavelength_nm(&self) -> f32 {
        2_897_771.955 / self.temperature_k
    }

    pub fn luminous_exitance(&self) -> f64 {
        5.670374419e-8 * (self.temperature_k as f64).powi(4)
    }
}