Détection de collision rapide

Je suis en train d'écrire une méthode qui permettra de calculer si les deux cercles se chevauchent. Je suis venu avec le suivant et je suis juste curieux de savoir si il est de toute façon il pourrait être optimisée en outre.

private static boolean isCollision(Point2D p1, float r1, Point2D p2, float r2)
{
    float a,dx, dy;
    a = (r1+r2) * (r1+r2);
    dx = (float) (p1.getX() - p2.getX());
    dy = (float) (p1.getY() - p2.getY());

    if (a > (dx*dx) + (dy*dy))
    {
        return true;
    }
    return false;
}

source d'informationauteur Oli