Вы можете использовать древовидную структуру данных с помощью разбиения двоичного пространства, о ней статья в Википедии . Насколько мне известно, это наиболее эффективный способ хранения информации о расположении объектов в n-мерном пространстве.
Вот как это работает. Допустим, у вас есть следующее поле
Допустим, у вас есть пробел 100x100.
У вас там 6 объектов с координатами от A до F
А (25,25)
В (25,75),
С (25,85),
D (75,75),
E (90,60)
Теперь мы разделим наше пространство на 4 части, каждая часть будет дочерним узлом корневого узла в дереве. Верхний левый угол содержит только точку А, так что это щит с одним листом.
нижний левый угол содержит 2 объекта, B и C, поэтому они будут листовыми узлами второго щита.
Теперь в правом нижнем углу будет 3 элемента, которые нам не нужны из-за идеи двоичного дерева, поэтому мы сделаем еще одно подразделение. Делая это рекурсивно, вы получаете очень эффективную структуру данных для поиска объектов в 2D-пространстве.