Показать сообщение отдельно
  #1 (permalink)  
Старый 30.01.2014, 17:29
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Пересечение нескольких окружностей
Всем привет!
Разрабатываю для проекта логику перемещения мобов на сервере.
Уже несколько дней пытаюсь реализовать, что бы запретить на 2D плоскости пересекаться окружностям, которые постоянно меняют свои координаты.

Примечание:
- Все окружности имеют одинаковый размер.
- Каждая окружности имеет одинаковую логику и алгоритм.

Суть алгоритма:
1) Функция получает новые координаты окружности X, Y.
2) Проверяет циклом дистанцию от данной окружности ко всем остальным.
3) Если дистанция от центра окружностей меньше, диаметра окружности - значит окружности пересекаются.
4) После, делаем что то типа "экстрополяции" удлиняя вектор и меняя положения нашей окружности.

На данный момент я реализовал только это, ибо дальше, когда на пути окружности уже хотя бы 2 - все катится к чертям( Реализовал несколько вариантов для проверки на пересечения с 2-мя окружностями, но получилось все очень примитивно.

Конечно можно попробовать реализовывать циклическим перебором всего всего... Но хочется сделать все максимально оптимизировано, ибо в данном случае каждая ms на кану.

Было


Стало

Посоветуйте литературу, или же примеры реализации, алгоритм..

Очень жду Ваших мыслей! Заранее спасибо!

PS: Необходимо реализовать отталкивание именно текущей окружности. То есть вариант, что бы оттолкнуть окружности вокруг в разные стороны не подходит. Положение вокруглежащих окружностей должно оставаться неизменно

Последний раз редактировалось Dorian_bs, 30.01.2014 в 17:36.
Ответить с цитированием