public GRectangle union(GRectangle r2) {
		if (isEmpty()) return new GRectangle(r2);
		if (r2.isEmpty()) return new GRectangle(this);
		GRectangle r1 = this;
		double x1 = Math.min(r1.xc, r2.xc);
		double y1 = Math.min(r1.yc, r2.yc);
		double x2 = Math.max(r1.xc + r1.myWidth, r2.xc + r2.myWidth);
		double y2 = Math.max(r1.yc + r1.myHeight, r2.yc + r2.myHeight);
		return new GRectangle(x1, y1, x2 - x1, y2 - y1);
	}