-rectangle rectangle::intersectionWith(const rectangle& r) const
-{
- point o = r.origin;
- point s = r.size;
- scalar a = std::max(origin.x, o.x);
- scalar b = std::max(origin.y, o.y);
- return rectangle(point(a, b),
- point(std::min(origin.x + size.x, o.x + s.x) - a,
- std::min(origin.y + size.y, o.y + s.y) - b));
-}