diff --git a/shapes/Cyl.cc b/shapes/Cyl.cc index d6c7291..4b45b49 100644 --- a/shapes/Cyl.cc +++ b/shapes/Cyl.cc @@ -32,7 +32,7 @@ Shape::IntersectionList Cyl::intersect(refptr _this, const Ray & ray) LinearSolver solver(-ray_inv.getDirection()[2], -ray_inv.getOrigin()[2]); Solver::Result solutions = solver.solve(); - if (solutions.numResults > 0) + if (solutions.numResults > 0 && solutions.results[0] > 0.0) { Vector isect_point = ray_inv[solutions.results[0]]; if (isect_point[0]*isect_point[0] + isect_point[1]*isect_point[1] @@ -50,7 +50,7 @@ Shape::IntersectionList Cyl::intersect(refptr _this, const Ray & ray) LinearSolver solver(ray_inv.getDirection()[2], ray_inv.getOrigin()[2] - m_height); Solver::Result solutions = solver.solve(); - if (solutions.numResults > 0) + if (solutions.numResults > 0 && solutions.results[0] > 0.0) { Vector isect_point = ray_inv[solutions.results[0]]; if (isect_point[0]*isect_point[0] + isect_point[1]*isect_point[1]