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)); } }
public static RectDouble TopEdge(this RectDouble rect) => RectDouble.FromEdges(rect.Left, rect.Top, rect.Right, rect.Top);
public static RectDouble RightEdge(this RectDouble rect) => RectDouble.FromEdges(rect.Right, rect.Top, rect.Right, rect.Bottom);
public static RectDouble LeftEdge(this RectDouble rect) => RectDouble.FromEdges(rect.Left, rect.Top, rect.Left, rect.Bottom);
public static RectDouble BottomEdge(this RectDouble rect) => RectDouble.FromEdges(rect.Left, rect.Bottom, rect.Right, rect.Bottom);