fx: sphere hit calculation sometimes picking wrong isct point
This commit is contained in:
@@ -24,7 +24,7 @@ impl Material for Dielectric {
|
||||
self.refraction_index
|
||||
};
|
||||
let unit = ray.dir().get_unit();
|
||||
let refr = unit.refract(hit.n(), ri);
|
||||
let refr = unit.refract(&hit.n().get_unit(), ri);
|
||||
Some((Ray::new(*hit.p(), refr), Colour::new(1., 1., 1.)))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user