Replies: 2 comments
-
| rust code: #[derive(Clone, Copy)]
pub struct Metallic {
    pub albedo: Rgb,
    pub blur: f64,
}
impl Metallic {
    pub fn new(albedo: Rgb, blur: f64) -> Self {
        Self {
            albedo,
            blur: blur.min(1.0),
        }
    }
}
impl Material for Metallic {
    fn scatter(&self, r: &Ray, rec: &HitRecord<'_>, rng: &mut ThreadRng) -> Option<Scatter> {
        let reflected = r.direction.unit().reflect(rec.normal);
        let scattered = Ray::new(
            rec.p,
            reflected + self.blur * Vec3::random_in_unit_sphere(rng),
        );
        if scattered.direction.dot(rec.normal) > 0.0 {
            Some(Scatter::new(scattered, self.albedo))
        } else {
            None
        }
    }
}reflect method for      pub fn reflect(self, normal: Self) -> Self {
        self - 2.0 * self.dot(normal) * normal
    } | 
Beta Was this translation helpful? Give feedback.
                  
                    0 replies
                  
                
            -
Beta Was this translation helpful? Give feedback.
                  
                    0 replies
                  
                
            
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment
  
        
    
Uh oh!
There was an error while loading. Please reload this page.
-
I'm on 9.5 in the 1 weekend book, for some reason the reflection of the center sphere on the left sphere is different than the reflection on the right sphere - I've made left and right the same color to make it easier to see. Any ideas?
Beta Was this translation helpful? Give feedback.
All reactions