whoops, logic error in clipping parabola to t1 and t2

This commit is contained in:
David Rose 2007-10-17 16:41:29 +00:00
parent e9240cfe24
commit 3f4d1aada2

View File

@ -352,17 +352,23 @@ test_intersection_from_parabola(const CollisionEntry &entry) const {
return NULL; return NULL;
} }
if (t2 < parabola->get_t1() || t1 > parabola->get_t2()) { if (t1 >= parabola->get_t1() && t1 <= parabola->get_t2()) {
// The intersection points are before the start of the parabola if (t2 >= parabola->get_t1() && t2 <= parabola->get_t2()) {
// or after the end of the parabola. The finite subset of the // Both intersection points are within our segment of the
// parabola is entirely in front of the plane. // parabola. Choose the first of the two.
return NULL; t = min(t1, t2);
} } else {
// Only t1 is within our segment.
t = t1;
}
// Choose one of the intersecting points. } else if (t2 >= parabola->get_t1() && t2 <= parabola->get_t2()) {
t = t1; // Only t2 is within our segment.
if (t < parabola->get_t1()) {
t = t2; t = t2;
} else {
// Neither intersection point is within our segment.
return NULL;
} }
} }