Я не согласен с этой строкой:
if(atanX > .1)
Потому что, если шары должны идти в ЦЕНТР сцены, как на осях X и Y, то это условие не выполняется непосредственно для шаровпод или над центром.
Сделайте так:
if (atanX > .1 || atanY > .1)
= Если любое из различий больше, чем .1, продолжайте с atan2 ...
РЕДАКТИРОВАТЬ: Еще одна очевидная ошибка - переменные atanX или atanY могут, на 50%, быть отрицательными.Поэтому, используйте либо это:
if (Math.abs(atanX) > .1 || Math.abs(atanY) > .1)
Или это, то же самое, но быстрее (хотя труднее читать):
if ((atanX > 0 ? atanX : -atanX) > .1 || (atanY > 0 ? atanY : -atanY) > .1)