public static bool RectContainsCoords(rect r, double x, double y) => (GetRectMinX(r) <= x) && (x <= GetRectMaxX(r)) && (GetRectMinY(r) <= y) && (y <= GetRectMaxY(r));
public static bool RectContainsLoc(rect r, location loc) => RectContainsCoords(r, GetLocationX(loc), GetLocationY(loc));
public static location GetRandomLocInRect(rect whichRect) => Location(GetRandomReal(GetRectMinX(whichRect), GetRectMaxX(whichRect)), GetRandomReal(GetRectMinY(whichRect), GetRectMaxY(whichRect)));
public static rect OffsetRectBJ(rect r, double dx, double dy) => Rect(GetRectMinX(r) + dx, GetRectMinY(r) + dy, GetRectMaxX(r) + dx, GetRectMaxY(r) + dy);
public static double GetRectMinY(rect whichRect) => whichRect.miny;
public static double GetRectMaxY(rect whichRect) => whichRect.maxy;
public static double GetRectCenterX(rect whichRect) => (whichRect.maxx - whichRect.minx) / 2 + whichRect.minx;
public static double GetRectCenterY(rect whichRect) => (whichRect.maxy - whichRect.miny) / 2 + whichRect.miny;
public static void SetRectFromLoc(rect whichRect, location min, location max) => SetRect(whichRect, min.x, min.y, max.x, max.y);
public static void MoveRectToLoc(rect whichRect, location newCenter) => MoveRectTo(whichRect, newCenter.x, newCenter.y);
public static void RemoveRect(rect whichRect) => whichRect.minx = whichRect.miny = whichRect.maxx = whichRect.maxy = 0;
public static double GetRectHeightBJ(rect r) => GetRectMaxY(r) - GetRectMinY(r);
public static double GetRectWidthBJ(rect r) => GetRectMaxX(r) - GetRectMinX(r);
public static location GetRectCenter(rect whichRect) => Location(GetRectCenterX(whichRect), GetRectCenterY(whichRect));
public static bool CompareRectsBJ(rect A, rect B) => GetRectMinX(A) == GetRectMinX(B) && GetRectMinY(A) == GetRectMinY(B) && GetRectMaxX(A) == GetRectMaxX(B) && GetRectMaxY(A) == GetRectMaxY(B);