public void add(Circle other) {
		if (mRadius == other.mRadius) {
			// Faster way, but only works when radius is the same
			double x1 = (mX + other.mX) / 2;
			double y1 = (mY + other.mY) / 2;
			double x = mX - other.mX;
			double y = mY - other.mY;
			double distanceSquared = x * x + y * y;
			double radiusSquared1 = mRadius * mRadius;
			double radiusSquared2 = other.mRadius * other.mRadius;
			if (radiusSquared1 < distanceSquared + radiusSquared2) {
				if (radiusSquared2 >= distanceSquared + radiusSquared1) {
					set(other);
				} else {
					set(x1, y1, (Math.sqrt(distanceSquared) + mRadius + other.mRadius) / 2);
				}
			}
		} else {
			double angle = Math.atan2(other.mY - mY, other.mX - mX);
			double x1 = other.mX + Math.cos(angle) * other.mRadius;
			double y1 = other.mY + Math.sin(angle) * other.mRadius;
			angle += Math.PI;
			double x2 = mX + Math.cos(angle) * mRadius;
			double y2 = mY + Math.sin(angle) * mRadius;
			double x = x1 - x2;
			double y = y1 - y2;
			double radius = Math.sqrt(x * x + y * y) / 2;
			if (mRadius < radius) {
				if (other.mRadius >= radius) {
					set(other);
				} else {
					set((x1 + x2) / 2, (y1 + y2) / 2, radius);
				}
			}
		}
	}