public void growBy(CollisionVolume other) {
    final float maxX;
    final float minX;

    final float maxY;
    final float minY;

    if (mRadius > 0) {
      maxX = Math.max(getMaxX(), other.getMaxX());
      minX = Math.min(getMinX(), other.getMinX());
      maxY = Math.max(getMaxY(), other.getMaxY());
      minY = Math.min(getMinY(), other.getMinY());
    } else {
      maxX = other.getMaxX();
      minX = other.getMinX();
      maxY = other.getMaxY();
      minY = other.getMinY();
    }
    final float horizontalDelta = maxX - minX;
    final float verticalDelta = maxY - minY;
    final float diameter = Math.max(horizontalDelta, verticalDelta);

    final float newCenterX = minX + (horizontalDelta / 2.0f);
    final float newCenterY = minY + (verticalDelta / 2.0f);
    final float newRadius = diameter / 2.0f;

    mCenter.set(newCenterX, newCenterY);
    mRadius = newRadius;
  }