aabbContainsLine method

bool aabbContainsLine(
  1. double x1,
  2. double y1,
  3. double x2,
  4. double y2,
)

Checks if the line between the two coordinates is contained within the Bounds.

Implementation

bool aabbContainsLine(double x1, double y1, double x2, double y2) {
  // Completely outside.
  if ((x1 <= min.x && x2 <= min.x) ||
      (y1 <= min.y && y2 <= min.y) ||
      (x1 >= max.x && x2 >= max.x) ||
      (y1 >= max.y && y2 >= max.y)) {
    return false;
  }

  final m = (y2 - y1) / (x2 - x1);

  double y = m * (min.x - x1) + y1;
  if (y > min.y && y < max.y) return true;

  y = m * (max.x - x1) + y1;
  if (y > min.y && y < max.y) return true;

  double x = (min.y - y1) / m + x1;
  if (x > min.x && x < max.x) return true;

  x = (max.y - y1) / m + x1;
  if (x > min.x && x < max.x) return true;

  return false;
}