intersection method

Rectangle<num>? intersection(
  1. Rectangle<num> other
)

Computes the intersection of this and other.

The intersection of two axis-aligned rectangles, if any, is always another axis-aligned rectangle.

Returns the intersection of this and other, or null if they don't intersect.

Implementation

Rectangle<num>? intersection(Rectangle<num> other) {
  var x0 = max(left, other.left);
  var x1 = min(left + width, other.left + other.width);

  if (x0 <= x1) {
    var y0 = max(top, other.top);
    var y1 = min(top + height, other.top + other.height);

    if (y0 <= y1) {
      return new Rectangle<num>(x0, y0, x1 - x0, y1 - y0);
    }
  }
  return null;
}