Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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.
Ответить с цитированием
  #2 (permalink)  
Старый 30.01.2014, 17:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Dorian_bs,
массив координат -- изначально никто непересекается -- при добавлении или перемещении это проверяем -- при проверке любой ячейки делаем генерируем приращение -- проверяем на условие - false снова генерация и проверка -- true проверяем следущую.
Ответить с цитированием
  #3 (permalink)  
Старый 30.01.2014, 18:05
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Сообщение от рони Посмотреть сообщение
Dorian_bs,
массив координат -- изначально никто непересекается -- при добавлении или перемещении это проверяем -- при проверке любой ячейки делаем генерируем приращение -- проверяем на условие - false снова генерация и проверка -- true проверяем следущую.
Спасибо, то тут уже минимум 2 цикла. При этом вложенный цикл может сильно стопорить итерацию сервера и общую обработку данных.

Есть идеи, как реализовать без циклов (кроме общего, что поочередно обходит все окружности)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пересечение и разность двух массивов harold Общие вопросы Javascript 9 18.12.2013 21:41
Прогресс бар для загрузки нескольких файлов через XHR Ваяс AJAX и COMET 0 04.12.2013 13:03
Чтобы функция выполнялась в нескольких textarea Авас Элементы интерфейса 10 20.10.2013 19:10
Автоматическая смена нескольких картинок utb jQuery 4 24.01.2012 12:47
Сложение нескольких значений элементов frolvict jQuery 2 04.12.2010 11:52