С самого начала обнаружение столкновения похоже на проблему O (n ^ 2).
У вас есть куча объектов, и вам нужно проверить, сталкивается ли каждый объект с каким-либо другим объектом. Тем не менее, я знаю, что крайне неэффективно проверять каждый объект на всех других объектах. Почему относительно дорогостоящая проверка столкновения между двумя шарами, если они даже не близки друг к другу?
Вот пример моей простой программы, над которой я работаю:
Если у вас 1000 шариков, то если вы поехали с наивным обнаружением столкновения, у вас будет 1000 чеков на коллекцию (миллион)! Эта проверка столкновения быстро стала узким местом в моем приложении. Мне нужно выполнить некоторую широкую фазовую обрезку.
Какие методы следует использовать для обрезки коллизионных проверок при работе с 2d-круговыми объектами? Я читал о QuadTrees, BSP, пространственном хэшировании и т.д., Но трудно определить, какой метод наиболее подходит для этого варианта использования.
Кто-нибудь знает, что может сработать лучше всего?