diff --git a/include/J3ML/Geometry/AABB2D.h b/include/J3ML/Geometry/AABB2D.h index ab3d093..993ccb6 100644 --- a/include/J3ML/Geometry/AABB2D.h +++ b/include/J3ML/Geometry/AABB2D.h @@ -12,6 +12,7 @@ namespace Geometry Vector2 minPoint; Vector2 maxPoint; + AABB2D() {} AABB2D(const Vector2& min, const Vector2& max): minPoint(min), maxPoint(max) {} @@ -33,7 +34,7 @@ namespace Geometry maxPoint = Vector2::Max(maxPoint, point); } - bool Intersects(const AABB2D &rhs) const + bool Intersects(const AABB2D& rhs) const { return maxPoint.x >= rhs.minPoint.x && maxPoint.y >= rhs.minPoint.y && @@ -41,13 +42,13 @@ namespace Geometry rhs.maxPoint.y >= minPoint.y; } - bool Contains(const AABB2D &rhs) const + bool Contains(const AABB2D& rhs) const { return rhs.minPoint.x >= minPoint.x && rhs.minPoint.y >= minPoint.y && rhs.maxPoint.x <= maxPoint.x && rhs.maxPoint.y <= maxPoint.y; } - bool Contains(const vec2d &pt) const + bool Contains(const Vector2& pt) const { return pt.x >= minPoint.x && pt.y >= minPoint.y && pt.x <= maxPoint.x && pt.y <= maxPoint.y; @@ -79,9 +80,27 @@ namespace Geometry return minPoint + normalizedPos.Mul(maxPoint - minPoint); } - Vector2 ToNormalizedLocalSpace(const vec2d &pt) const + Vector2 ToNormalizedLocalSpace(const Vector2 &pt) const { return (pt - minPoint).Div(maxPoint - minPoint); } + + + AABB2D operator+(const Vector2& pt) const + { + AABB2D a; + a.minPoint = minPoint + pt; + a.maxPoint = maxPoint + pt; + return a; + } + + AABB2D operator-(const Vector2& pt) const + { + AABB2D a; + a.minPoint = minPoint - pt; + a.maxPoint = maxPoint - pt; + return a; + } + }; } \ No newline at end of file