Для начала вы ответьте себе на вопрос: как, по каким траекториям должны двигаться круги когда курсор стоит. Обратите внимание, что сейчас движения ограничены, т.е. круги движутся по прямой, на курсор или от курсора, и довольно быстро останавливаются. То же происходит и при первоначальной загрузке.
Как по вашему будут двигаться круги, когда их движение не ограничено во времени? Они разлетятся к чертям или как? Очевидно, что вы не хотите, чтобы они все разлетелись. Стало быть, должны (откуда-то) генериться новые круги (что данным алгоритмом совсем не предусмотрено), или же движение существующих должно быть циклическим.
Это всё я говорю к тому, что данный алгоритм, который вы где-то надыбали, не годится для ваших целей. Как минимум, он должен быть существенно переработан. Настолько, что фактически это будет новый алгоритм! И вообще прежде чем делать, вы должны были такие вопросы сами себе задать, понаблюдав за поведение существующего алгоритма.