Box2D.hpp

A class to manage rectangles in a 2D plane.

This file is part of Empirical, https://github.com/devosoft/Empirical Copyright (C) 2024 Michigan State University MIT Software license; see doc/LICENSE.md

Defines

INCLUDE_EMP_GEOMETRY_BOX2D_HPP_GUARD

Typedefs

using Box = Box2D<double>
template<typename TYPE = double>
class Box2D
#include <Box2D.hpp>

Public Functions

inline constexpr Box2D(const Point2D<TYPE> &ul_corner, const Point2D<TYPE> &size)
inline constexpr Box2D(TYPE _x, TYPE _y, TYPE _w, TYPE _h)
constexpr Box2D(const Box2D&) = default
Box2D &operator=(const Box2D &_in) = default
constexpr int operator<=>(const Box2D&) const = default
inline constexpr TYPE GetWidth() const
inline constexpr TYPE GetHeight() const
inline constexpr TYPE GetLeft() const
inline constexpr TYPE GetRight() const
inline constexpr TYPE GetTop() const
inline constexpr TYPE GetBottom() const
inline constexpr TYPE GetArea() const
inline constexpr TYPE GetPerimeter() const
inline constexpr TYPE SetPosition(const Point2D<TYPE> &in)
inline constexpr TYPE SetSize(const Point2D<TYPE> &in)
inline Box2D<TYPE> &Translate(Point2D<TYPE> shift)
inline constexpr bool Contains(const Point2D<TYPE> &point) const
inline constexpr bool Contains(const Box2D<TYPE> &other) const
inline constexpr bool HasOverlap(const Box2D<TYPE> &other) const

Private Members

Point2D<TYPE> ul_corner
Point2D<TYPE> size