use rand::Rng; use crate::vec3::Vec3; pub fn degrees_to_radians(degrees: f64) -> f64 { degrees * std::f64::consts::PI / 180.0 } pub fn random_double() -> f64 { let mut rng = rand::thread_rng(); rng.gen::() } pub fn random_double_range(min: f64, max: f64) -> f64 { let mut rng = rand::thread_rng(); rng.gen_range(min..max) } pub fn random_in_unit_disk() -> Vec3 { // TODO: This feels not nice loop { let p = Vec3::new( random_double_range(-1.0, 1.0), random_double_range(-1.0, 1.0), 0.0, ); if p.length_squared() >= 1.0 { continue; } return p; } }