What about of implementing a free function taking the subjects as parameters, instead of binding it to a specific class, if you can't tell which it should belong to specifically?
Would a separate "middle-man" Intersections class be better?
If you're working with a programming language like c# or java, which doesn't support free functions, you probably should have such Intersections (static) class, e.g. like in c#:
public static class Intersections { public static IList<Point> GetIntersectionPoints(Circle c, LineSegment ls) { // ... } }
CirclewithCircleas well, or add other shapes, because that would make things interesting, or are you just solving this very specific problem of intersection ofCircleandLineSegment.Circle-Circleintersection as well asLineSegment-LineSegmentintersectionsCircleandLineSegmentinherit from the same base class? Are there other geometric classes involved that will need intersection checks?