From 5170dd0aeabdf97c256fbc653a46034279d36d89 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Tue, 23 Jan 2024 19:14:23 +0300 Subject: [PATCH] refactor: Circle --- Engine.Physics2D/Primitives/Circle.cs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) 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); }