From 152362a57dc7fe9dce830ef69118984f854d6375 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sat, 8 May 2010 13:04:42 -0600 Subject: Handle degenerate cases in ray/box intersections. --- libdimension/cube.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'libdimension/cube.c') diff --git a/libdimension/cube.c b/libdimension/cube.c index 4c09d04..84b1553 100644 --- a/libdimension/cube.c +++ b/libdimension/cube.c @@ -82,6 +82,9 @@ dmnsn_cube_intersection_fn(const dmnsn_object *cube, dmnsn_line line, if (tmin > tmax) return false; + } else { + if (line_trans.x0.x < -1.0 || line_trans.x0.x > 1.0) + return false; } if (line_trans.n.y != 0.0) { @@ -110,6 +113,9 @@ dmnsn_cube_intersection_fn(const dmnsn_object *cube, dmnsn_line line, if (tmin > tmax) return false; + } else { + if (line_trans.x0.y < -1.0 || line_trans.x0.y > 1.0) + return false; } if (line_trans.n.z != 0.0) { @@ -138,6 +144,9 @@ dmnsn_cube_intersection_fn(const dmnsn_object *cube, dmnsn_line line, if (tmin > tmax) return false; + } else { + if (line_trans.x0.z < -1.0 || line_trans.x0.z > 1.0) + return false; } if (tmin < 0.0) { -- cgit v1.2.3