public static Rect2D Intersect(Rect2D rect1, Rect2D rect2) { if (rect1.IsUndefined() || rect2.IsUndefined()) { return(Undefined); } var left = Math.Max(rect1.Left, rect2.Left); var top = Math.Max(rect1.Top, rect2.Top); var right = Math.Min(rect1.Right, rect2.Right); var bottom = Math.Min(rect1.Bottom, rect2.Bottom); return(left >= right || top >= bottom ? Undefined : new Rect2D(new Point2D(left, top), new Point2D(right, bottom))); }
public static Rect2D Union(Rect2D rect1, Rect2D rect2) { if (rect1.IsUndefined()) { return(rect2); } if (rect2.IsUndefined()) { return(rect1); } var left = Math.Min(rect1.Left, rect2.Left); var top = Math.Min(rect1.Top, rect2.Top); var right = Math.Max(rect1.Right, rect2.Right); var bottom = Math.Max(rect1.Bottom, rect2.Bottom); return(new Rect2D(new Point2D(left, top), new Point2D(right, bottom))); }
public static bool IsDefined(this Rect2D rect) => !rect.IsUndefined();