示例#1
0
        public static RectDouble FromPoints(IList <PointDouble> points)
        {
            if (points.Count == 0)
            {
                return(RectDouble.Zero);
            }
            PointDouble num = points[0];

            if (points.Count == 1)
            {
                return(new RectDouble(num.X, num.Y, 0.0, 0.0));
            }
            PointDouble num2 = points[1];
            double      num3 = Math.Min(num.X, num2.X);
            double      num4 = Math.Min(num.Y, num2.Y);
            double      num5 = Math.Max(num.X, num2.X);
            double      num6 = Math.Max(num.Y, num2.Y);

            for (int i = 2; i < points.Count; i++)
            {
                PointDouble num8 = points[i];
                num3 = Math.Min(num3, num8.X);
                num4 = Math.Min(num4, num8.Y);
                num5 = Math.Max(num5, num8.X);
                num6 = Math.Max(num6, num8.Y);
            }
            return(RectDouble.FromEdges(num3, num4, num5, num6));
        }
 public static RectDouble Bounds(this IEnumerable <PointDouble> points)
 {
     using (IEnumerator <PointDouble> enumerator = points.GetEnumerator())
     {
         if (!enumerator.MoveNext())
         {
             return(RectDouble.Empty);
         }
         PointDouble current = enumerator.Current;
         double      x       = current.X;
         double      y       = current.Y;
         double      num4    = current.X;
         double      num5    = current.Y;
         while (enumerator.MoveNext())
         {
             PointDouble num7 = enumerator.Current;
             x    = Math.Min(x, num7.X);
             y    = Math.Min(y, num7.Y);
             num4 = Math.Max(num4, num7.X);
             num5 = Math.Max(num5, num7.Y);
         }
         return(RectDouble.FromEdges(x, y, num4, num5));
     }
 }
示例#3
0
 public static RectDouble TopEdge(this RectDouble rect) =>
 RectDouble.FromEdges(rect.Left, rect.Top, rect.Right, rect.Top);
示例#4
0
 public static RectDouble RightEdge(this RectDouble rect) =>
 RectDouble.FromEdges(rect.Right, rect.Top, rect.Right, rect.Bottom);
示例#5
0
 public static RectDouble LeftEdge(this RectDouble rect) =>
 RectDouble.FromEdges(rect.Left, rect.Top, rect.Left, rect.Bottom);
示例#6
0
 public static RectDouble BottomEdge(this RectDouble rect) =>
 RectDouble.FromEdges(rect.Left, rect.Bottom, rect.Right, rect.Bottom);