Мне эта многоходовка представляется так:
1. Плоскость с препятствиями делится на прямоугольники (тут тоже стоит подобрать алгоритм)
2. http://ru.wikipedia.org/wiki/Упаковка_шаров
Про производительность JS не скажу, зависит от количества шаров и выбранных алгоритмов.