Snap.svg определяет расстояние перемещения по траектории

Как указаноВот и обновлен для использования с Snap.svgВотЯ хотел бы лучше понять, как на самом деле работает предоставляемая функция gradSearch (это немного над моей головой), и есть ли какие-либо хорошие альтернативы этому подходу?

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

Ответы на вопрос(1)

Ваш ответ на вопрос