Я разрабатываю симуляцию на Java, в которой объекты перемещаются по двумерной сетке. Каждая ячейка в сетке может быть занята только одной ячейкой, и объекты перемещаются, переходя из одной ячейки в другую.
Это больше теоретически, чем специфично для Java, но есть ли у кого-нибудь идеи относительно того, как я должен подходить к обработке столкновений с этой сеткой? Существуют ли какие-либо алгоритмы, которые люди использовали для обработки столкновений в мире, похожем на сетку?
Обратите внимание, я не говорю об обнаружении столкновений, так как это тривиально, поскольку объекты перемещаются из одной ячейки в другую. Я говорю об обработке столкновений, которая может стать чрезвычайно сложной.
Пример: объект A хочет переместиться в то же место, что и объект B, а объект C хочет переместиться в текущее местоположение объекта B. Поскольку каждая ячейка может содержать только один объект, если объект A сможет переместиться в желаемое место, это приведет к тому, что объект B останется неподвижным, и, следовательно, объект C также останется неподвижным.
Можно представить, что это может создать еще более длинную цепочку коллизий, которые необходимо обработать.
Существуют ли какие-либо алгоритмы или методы, которые люди использовали, которые могут помочь в этом? Поиск этой проблемы практически невозможен без насыщения результатов поиска алгоритмами обнаружения столкновений.
Редактировать: все объекты перемещаются одновременно. Я хочу ограничить количество объектов, которые должны оставаться неподвижными, поэтому я предпочитаю сначала обрабатывать объекты с более длинными цепочками столкновений (например, объект B в этом примере).