void Extent::Merge (Extent& e) { float nl = min(_left, e._left); float nb = min(_bottom, e._bottom); if (Undefined()) { _left = e._left; _bottom = e._bottom; _cx = e._cx; _cy = e._cy; } else if (!e.Undefined()) { _cx = (nl + max(2*_cx - _left, 2*e._cx - e._left)) / 2; _cy = (nb + max(2*_cy - _bottom, 2*e._cy - e._bottom)) / 2; _left = nl; _bottom = nb; } _tol = max(_tol, e._tol); }