mirror of
https://github.com/enduro2d/enduro2d.git
synced 2025-12-16 14:08:59 +07:00
math::overlaps
This commit is contained in:
@@ -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
|
||||
//
|
||||
|
||||
@@ -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())));
|
||||
|
||||
Reference in New Issue
Block a user