aabbIntersectsSegment method

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

Implementation

bool aabbIntersectsSegment(double x1, double y1, double x2, double y2) {
  final double minX = this.minX;
  final double minY = this.minY;
  final double maxX = this.maxX;
  final double maxY = this.maxY;
  if ((x1 <= minX && x2 <= minX) ||
      (y1 <= minY && y2 <= minY) ||
      (x1 >= maxX && x2 >= maxX) ||
      (y1 >= maxY && y2 >= maxY)) return false;
  final double m = (y2 - y1) / (x2 - x1);
  double y = m * (minX - x1) + y1;
  if (y > minY && y < maxY) return true;
  y = m * (maxX - x1) + y1;
  if (y > minY && y < maxY) return true;
  double x = (minY - y1) / m + x1;
  if (x > minX && x < maxX) return true;
  x = (maxY - y1) / m + x1;
  if (x > minX && x < maxX) return true;
  return false;
}