public static Point? GetNearest(Circle2D c, Point p) { Ray2D r = new Ray2D(c.Center, p); return GetNearest(r.Intersection(c), p); }
public static IList<Point> GetIntersects(ISegment line1, IRay line2) { IList<Point> list = new List<Point>(); Ray2D Ray = new Ray2D(line1.StartPoint, line1.EndPoint); IList<Point> intersect = line2.Intersection(Ray); if (intersect.Count > 0 && ( intersect[0].X > Math.Min(line1.StartPoint.X, line1.EndPoint.X) && intersect[0].X < Math.Max(line1.StartPoint.X, line1.EndPoint.X) && intersect[0].Y > Math.Min(line1.StartPoint.Y, line1.EndPoint.Y) && intersect[0].Y < Math.Max(line1.StartPoint.Y, line1.EndPoint.Y) ) ) { list.Add(intersect[0]); } return list; }