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; }