public static bool ArcCircleCollides(Vector2F arcCenter, Vector2F arcDirection, float arcRadius, float arcLength, Circle circle) { Vector2F arcDelta = arcDirection - arcCenter; Vector2F circleDelta = circle.Center - arcCenter; if (arcDelta == circleDelta) { return(true); } if (arcDelta.Angle(circleDelta) < arcLength / 2f) { return(Vector2F.Distance(arcCenter, circle.Center) <= arcRadius + circle.Radius); } else { return(false); } }