public static IList <Point> GetIntersects(ICircle circle, ISegment line) { IList <Point> list = new List <Point>(); IPoint startPoint = line.GetKeyPoint(KeyPointType.Start); IPoint endPoint = line.GetKeyPoint(KeyPointType.End); IList <Point> RayIntersections = circle.Intersection( new Ray2D(new Point(startPoint.X, startPoint.Y), new Point(endPoint.X, endPoint.Y)) ); foreach (Point p in RayIntersections) { if (p.X < Math.Max(startPoint.X, endPoint.X) && p.X > Math.Min(startPoint.X, endPoint.X) && p.Y < Math.Max(startPoint.Y, endPoint.Y) && p.Y > Math.Min(startPoint.Y, endPoint.Y)) { list.Add(p); } } return(list); }
public static IList<Point> GetIntersects(ICircle circle, ISegment line) { IList<Point> list = new List<Point>(); IPoint startPoint = line.GetKeyPoint(KeyPointType.Start); IPoint endPoint = line.GetKeyPoint(KeyPointType.End); IList<Point> RayIntersections = circle.Intersection( new Ray2D(new Point(startPoint.X, startPoint.Y), new Point(endPoint.X, endPoint.Y)) ); foreach (Point p in RayIntersections) { if (p.X < Math.Max(startPoint.X, endPoint.X) && p.X > Math.Min(startPoint.X, endPoint.X) && p.Y < Math.Max(startPoint.Y, endPoint.Y) && p.Y > Math.Min(startPoint.Y, endPoint.Y)) { list.Add(p); } } return list; }