Всем привет!
Разрабатываю для проекта логику перемещения мобов на сервере.
Уже несколько дней пытаюсь реализовать, что бы запретить на 2D плоскости пересекаться окружностям, которые постоянно меняют свои координаты.
Примечание:
- Все окружности имеют одинаковый размер.
- Каждая окружности имеет одинаковую логику и алгоритм.
Суть алгоритма:
1) Функция получает новые координаты окружности X, Y.
2) Проверяет циклом дистанцию от данной окружности ко всем остальным.
3) Если дистанция от центра окружностей меньше, диаметра окружности - значит окружности пересекаются.
4) После, делаем что то типа "экстрополяции" удлиняя вектор и меняя положения нашей окружности.
На данный момент я реализовал только это, ибо дальше, когда на пути окружности уже хотя бы 2 - все катится к чертям( Реализовал несколько вариантов для проверки на пересечения с 2-мя окружностями, но получилось все очень примитивно.
Конечно можно попробовать реализовывать циклическим перебором всего всего... Но хочется сделать все максимально оптимизировано, ибо в данном случае каждая ms на кану.
Было
Стало
Посоветуйте литературу, или же примеры реализации, алгоритм..
Очень жду Ваших мыслей! Заранее спасибо!
PS: Необходимо реализовать отталкивание именно текущей окружности. То есть вариант, что бы оттолкнуть окружности вокруг в разные стороны не подходит. Положение вокруглежащих окружностей должно оставаться неизменно