sat static method

bool sat(
  1. Vector2 delta,
  2. Vector2 axis,
  3. Vector2 exA,
  4. Vector2 eyA,
  5. Vector2 exB,
  6. Vector2 eyB,
)

Returns true if axis separates a rectangle described by exA/eyA, centered delta away from a rectangle described by exB/eyB.

axis doesn't need to be normalized: both projections scale by the same factor, which doesn't affect whether their ranges overlap.

Implementation

static bool sat(
  Vector2 delta,
  Vector2 axis,
  Vector2 exA,
  Vector2 eyA,
  Vector2 exB,
  Vector2 eyB,
) {
  final distance = delta.dot(axis).abs();
  final radius =
      exA.dot(axis).abs() + //
      eyA.dot(axis).abs() +
      exB.dot(axis).abs() +
      eyB.dot(axis).abs();

  return distance > radius;
}