예제 #1
0
 public static Point? GetNearest(Circle2D c, Point p)
 {
     Ray2D r = new Ray2D(c.Center, p);
     return GetNearest(r.Intersection(c), p);
 }
예제 #2
0
        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;
        }