#[allow(dead_code)] use nalgebra::Vector3; // MATERIAL ----------------------------------------------------------------- #[derive(Clone)] pub struct Material { pub kd: Vector3, pub ks: Vector3, pub shininess: f32, } impl Material { pub fn new(kd: Vector3, ks: Vector3, shininess: f64) -> Material { let kd = kd.cast(); let ks = ks.cast(); let shininess = shininess as f32; Material { kd, ks, shininess } } pub fn magenta() -> Material { let kd = Vector3::new(1.0, 0.0, 1.0); let ks = Vector3::new(1.0, 0.0, 1.0); let shininess = 0.5; Material { kd, ks, shininess } } pub fn turquoise() -> Material { let kd = Vector3::new(0.25, 0.3, 0.7); let ks = Vector3::new(0.25, 0.3, 0.7); let shininess = 0.5; Material { kd, ks, shininess } } pub fn red() -> Material { let kd = Vector3::new(0.8, 0.0, 0.3); let ks = Vector3::new(0.8, 0.3, 0.0); let shininess = 0.5; Material { kd, ks, shininess } } pub fn blue() -> Material { let kd = Vector3::new(0.0, 0.3, 0.6); let ks = Vector3::new(0.3, 0.0, 0.6); let shininess = 0.5; Material { kd, ks, shininess } } pub fn green() -> Material { let kd = Vector3::new(0.0, 1.0, 0.0); let ks = Vector3::new(0.0, 1.0, 0.0); let shininess = 0.5; Material { kd, ks, shininess } } }