diff --git a/src/objects/sphere.rs b/src/objects/sphere.rs index 1a64a09..ae985e6 100644 --- a/src/objects/sphere.rs +++ b/src/objects/sphere.rs @@ -42,7 +42,9 @@ impl Hittable for Sphere { if d < 0. { None } else { - let t = (h - sqrt(d)) / a; + let tl = (h - sqrt(d)) / a; + let tr = (h + sqrt(d)) / a; + let t = if tl > 0.001 { tl } else { tr }; let p = r.at(t); let out_n = (p - self.center) / self.radius; Some(Hit::new( diff --git a/src/vec3.rs b/src/vec3.rs index 0e35b8b..e70b723 100644 --- a/src/vec3.rs +++ b/src/vec3.rs @@ -102,7 +102,7 @@ impl Vec3 { } pub fn reflect(&self, n: &Self) -> Self { - *self - 2. * self.dot(n) * n + *self - 2. * (self.dot(n) * n) } pub fn refract(&self, n: &Self, etai_over_etat: f32) -> Self {