Fixed more template bugs - made rectangle overlap fair on all sides

pull/300/head
Javidx9 2 years ago
parent 025dcbdc4e
commit e7c20b096d
  1. 16
      utilities/olcUTIL_Geometry2D.h

@ -149,7 +149,7 @@ namespace olc::utils::geom2d
// Get line segment from top side of rectangle // Get line segment from top side of rectangle
inline line<T> top() const inline line<T> top() const
{ {
return { pos, {pos + size.x, pos.y } }; return { pos, {pos.x + size.x, pos.y } };
} }
// Get line segment from bottom side of rectangle // Get line segment from bottom side of rectangle
@ -167,7 +167,7 @@ namespace olc::utils::geom2d
// Get line segment from right side of rectangle // Get line segment from right side of rectangle
inline line<T> right() const inline line<T> right() const
{ {
return { {pos + size.x, pos.y }, pos + size }; return { {pos.x + size.x, pos.y }, pos + size };
} }
// Get a line from an indexed side, starting top, going clockwise // Get a line from an indexed side, starting top, going clockwise
@ -342,7 +342,7 @@ namespace olc::utils::geom2d
inline constexpr bool contains(const rect<T1>& r, const olc::v2d_generic<T2>& p) inline constexpr bool contains(const rect<T1>& r, const olc::v2d_generic<T2>& p)
{ {
return !(p.x < r.pos.x || p.y < r.pos.y || return !(p.x < r.pos.x || p.y < r.pos.y ||
p.x >= (r.pos.x + r.size.x) || p.y >= (r.pos.y + r.size.y)); p.x > (r.pos.x + r.size.x) || p.y > (r.pos.y + r.size.y));
} }
// Checks if circle contains a point // Checks if circle contains a point
@ -426,10 +426,10 @@ namespace olc::utils::geom2d
inline std::vector<olc::v2d_generic<T2>> intersects(const rect<T1>& r, const olc::v2d_generic<T2>& p) inline std::vector<olc::v2d_generic<T2>> intersects(const rect<T1>& r, const olc::v2d_generic<T2>& p)
{ {
std::vector<olc::v2d_generic<T2>> vPoints; std::vector<olc::v2d_generic<T2>> vPoints;
if (contains(r.top())) vPoints.push_back(p); if (contains(r.top(), p)) vPoints.push_back(p);
if (contains(r.bottom())) vPoints.push_back(p); if (contains(r.bottom(), p)) vPoints.push_back(p);
if (contains(r.left())) vPoints.push_back(p); if (contains(r.left(), p)) vPoints.push_back(p);
if (contains(r.right())) vPoints.push_back(p); if (contains(r.right(), p)) vPoints.push_back(p);
return vPoints; return vPoints;
} }
@ -448,7 +448,7 @@ namespace olc::utils::geom2d
inline std::vector<olc::v2d_generic<T2>> intersects(const triangle<T1>& r, const olc::v2d_generic<T2>& p) inline std::vector<olc::v2d_generic<T2>> intersects(const triangle<T1>& r, const olc::v2d_generic<T2>& p)
{ {
// TODO: // TODO:
return false; return {};
} }

Loading…
Cancel
Save