circleRectangle method

  1. @override
bool circleRectangle(
  1. Vector2 circleCenter,
  2. double radius,
  3. Vector2 rectCenter,
  4. Vector2 ex,
  5. Vector2 ey,
)
override

Returns true if a circle at circleCenter with radius overlaps a rectangle centered at rectCenter, described by extents ex/ey.

Implementation

@override
bool circleRectangle(
  Vector2 circleCenter,
  double radius,
  Vector2 rectCenter,
  Vector2 ex,
  Vector2 ey,
) {
  final delta = circleCenter - rectCenter;
  final u = (delta.dot(ex) / ex.length2).clamp(-1.0, 1.0);
  final v = (delta.dot(ey) / ey.length2).clamp(-1.0, 1.0);
  final closest = rectCenter + ex * u + ey * v;
  return circleCenter.distance2(closest) <= radius * radius;
}