Snap.svg determina la distancia de arrastre a lo largo de una ruta

Como se hace referenciaaquí y actualizado para usar con Snap.svgaquí, Me gustaría entender mejor cómo funciona realmente la función gradSearch proporcionada (está un poco sobre mi cabeza), y si hay alguna buena alternativa a este enfoque.

gradSearch = function (l0, pt) {
    l0 = l0 + totLen;
    var l1 = l0,
        dist0 = dist(path.getPointAtLength(l0 % totLen), pt),
        dist1,
        searchDir;

    if (dist(path.getPointAtLength((l0 - searchDl) % totLen), pt) > 
       dist(path.getPointAtLength((l0 + searchDl) % totLen), pt)) {
        searchDir = searchDl;
    } else {
        searchDir = -searchDl;
    }

    l1 += searchDir;
    dist1 = dist(path.getPointAtLength(l1 % totLen), pt);
    while (dist1 < dist0) {
        dist0 = dist1;
        l1 += searchDir;
        dist1 = dist(path.getPointAtLength(l1 % totLen), pt);
    }
    l1 -= searchDir;
    return (l1 % totLen);
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta