math::overlaps

This commit is contained in:
2018-10-24 20:00:46 +07:00
parent b934e673c7
commit ca4f05a989
2 changed files with 26 additions and 0 deletions

View File

@@ -217,6 +217,22 @@ namespace e2d { namespace math
&& p.y >= min.y && p.y <= max.y;
}
//
// overlaps
//
template < typename T >
bool overlaps(const rect<T>& l, const rect<T>& r) noexcept {
const vec2<T> min_l = minimum(l);
const vec2<T> max_l = maximum(l);
const vec2<T> min_r = minimum(r);
const vec2<T> max_r = maximum(r);
return max_l.x > min_r.x
&& min_l.x < max_r.x
&& max_l.y > min_r.y
&& min_l.y < max_r.y;
}
//
// contains_nan
//

View File

@@ -110,6 +110,16 @@ TEST_CASE("rect") {
REQUIRE_FALSE(math::inside(r4i(1,2,-3,-4), v2i(-3,2)));
REQUIRE_FALSE(math::inside(r4i(1,2,-3,-4), v2i(1,-3)));
REQUIRE_FALSE(math::overlaps(r4i(0,0,10,10), r4i(10,0,10,10)));
REQUIRE_FALSE(math::overlaps(r4i(0,0,10,10), r4i(0,10,10,10)));
REQUIRE_FALSE(math::overlaps(r4i(0,0,10,10), r4i(10,10,10,10)));
REQUIRE(math::overlaps(r4i(0,0,10,10), r4i(9,0,10,10)));
REQUIRE(math::overlaps(r4i(0,0,10,10), r4i(0,9,10,10)));
REQUIRE(math::overlaps(r4i(0,0,10,10), r4i(9,9,10,10)));
REQUIRE(math::overlaps(r4i(0,0,10,10), r4i(-9,0,10,10)));
REQUIRE(math::overlaps(r4i(0,0,10,10), r4i(0,-9,10,10)));
REQUIRE(math::overlaps(r4i(0,0,10,10), r4i(-9,-9,10,10)));
REQUIRE_FALSE(math::contains_nan(r4i(1,2,3,4)));
REQUIRE_FALSE(math::contains_nan(r4f(1.f,2.f,3.f,4.f)));
REQUIRE(math::contains_nan(r4f(1.f,std::numeric_limits<f32>::quiet_NaN())));