diff --git a/src/Math/Geometry/Rectangle.h b/src/Math/Geometry/Rectangle.h index 21f3bb331..5d7ba1a66 100644 --- a/src/Math/Geometry/Rectangle.h +++ b/src/Math/Geometry/Rectangle.h @@ -132,6 +132,11 @@ template class Rectangle { /** @brief %Rectangle height */ constexpr T height() const { return _topRight.y() - _bottomLeft.y(); } + /** @brief Translated rectangle */ + Rectangle translated(const Vector2& vec) { + return {_bottomLeft + vec, _topRight + vec}; + }; + private: Vector2 _bottomLeft; Vector2 _topRight; diff --git a/src/Math/Geometry/Test/RectangleTest.cpp b/src/Math/Geometry/Test/RectangleTest.cpp index b7d10facb..8bb46f434 100644 --- a/src/Math/Geometry/Test/RectangleTest.cpp +++ b/src/Math/Geometry/Test/RectangleTest.cpp @@ -44,6 +44,8 @@ class RectangleTest: public Corrade::TestSuite::Tester { void compare(); void size(); + void translated(); + void debug(); void configuration(); }; @@ -63,6 +65,8 @@ RectangleTest::RectangleTest() { &RectangleTest::compare, &RectangleTest::size, + &RectangleTest::translated, + &RectangleTest::debug, &RectangleTest::configuration}); } @@ -144,6 +148,11 @@ void RectangleTest::size() { CORRADE_COMPARE(rect.height(), 7); } +void RectangleTest::translated() { + CORRADE_COMPARE(Rectanglei({34, 23}, {47, 30}).translated({-17, 40}), + Rectanglei({17, 63}, {30, 70})); +} + void RectangleTest::debug() { std::ostringstream o; Debug(&o) << Rectanglei({34, 23}, {47, 30});