Fixed Circle V Circle

pull/300/head
Javidx9 2 years ago
parent a88cd7afb5
commit 6a1105fd3e
  1. 15
      utilities/olcUTIL_Geometry2D.h

@ -61,7 +61,7 @@ namespace olc::utils::geom2d
const double pi = 3.141592653589793238462643383279502884;
// Floating point error margin
const double epsilon = 0.0001;
const double epsilon = 0.001;
//https://stackoverflow.com/questions/1903954/is-there-a-standard-sign-function-signum-sgn-in-c-c
template <typename T>
@ -228,7 +228,8 @@ namespace olc::utils::geom2d
{
std::array<olc::v2d_generic<T>, 3> pos;
inline triangle(const olc::v2d_generic<T>& p0 = { T(0), T(0) },
inline triangle(
const olc::v2d_generic<T>& p0 = { T(0), T(0) },
const olc::v2d_generic<T>& p1 = { T(0), T(0) },
const olc::v2d_generic<T>& p2 = { T(0), T(0) })
: pos{ p0,p1,p2 }
@ -530,6 +531,9 @@ namespace olc::utils::geom2d
{
return contains(r, l.start)
|| contains(r, l.end);
// TODO: This method is no good, it cant detect lines whose start and end
// points are outside the rectangle
}
// Check if circle overlaps line segment
@ -545,6 +549,9 @@ namespace olc::utils::geom2d
inline constexpr bool overlaps(const triangle<T1>& t, const line<T2>& l)
{
return overlaps(t, l.start) || overlaps(t, l.end);
// TODO: This method is no good, it cant detect lines whose start and end
// points are outside the triangle
}
@ -773,7 +780,7 @@ namespace olc::utils::geom2d
template<typename T1, typename T2>
inline constexpr bool contains(const circle<T1>& c1, const circle<T2>& c2)
{
return (c1.pos - c2.pos).mag2() <= (c1.radius * c1.radius) - (c2.radius * c2.radius);
return (c1.pos - c2.pos).mag2() <= (c1.radius - c2.radius) * (c1.radius - c2.radius);
}
// Check if triangle contains circle
@ -812,7 +819,7 @@ namespace olc::utils::geom2d
template<typename T1, typename T2>
inline constexpr bool overlaps(const circle<T1>& c1, const circle<T2>& c2)
{
return (c1.pos - c2.pos).mag2() <= (c1.radius * c1.radius) + (c2.radius * c2.radius);
return (c1.pos - c2.pos).mag2() <= (c1.radius + c2.radius) * (c1.radius + c2.radius);
}
// Check if triangle overlaps circle

Loading…
Cancel
Save