diff --git a/Engine.Physics2D/Primitives/Circle.cs b/Engine.Physics2D/Primitives/Circle.cs index 1d30cf2..4c31175 100644 --- a/Engine.Physics2D/Primitives/Circle.cs +++ b/Engine.Physics2D/Primitives/Circle.cs @@ -4,15 +4,14 @@ namespace Syntriax.Engine.Physics2D.Primitives; public record Circle(Vector2D Position, float Radius) { - public bool Intersects(Circle other) - { - float distanceSquared = (Position - other.Position).LengthSquared(); - float radiusSumSquared = Radius * Radius + other.Radius * other.Radius; + public float RadiusSquared => Radius * Radius; + public float Diameter => 2f * Radius; - return distanceSquared < radiusSumSquared; - } - - public bool Overlaps(Vector2D point) => (Position - point).LengthSquared() <= Radius * Radius; - public bool ApproximatelyEquals(Circle other) - => Position.ApproximatelyEquals(other.Position) && Radius.ApproximatelyEquals(other.Radius); + public static bool ApproximatelyEquals(Circle left, Circle right) + => left.Position.ApproximatelyEquals(right.Position) && left.Radius.ApproximatelyEquals(right.Radius); +} + +public static class CircleExtensions +{ + public static bool ApproximatelyEquals(this Circle left, Circle right) => Circle.ApproximatelyEquals(left, right); }