Другое решение: биннинг для ваших сущностей.
Вы создаете относительно запасную сетку или даже квад-дерево.При заданных координатах (x,y)
он позволяет найти за log(d)
шагов все объекты, находящиеся в одной и той же (или соседних) ячейках, где d
- это глубина вашего четырехугольного дерева.
С некоторымис помощью веревок (указатели от конечных узлов, указывающих на соседние ячейки), доступ к соседу может быть сделан за постоянное время.
Чтобы узнать, видна ли данная плитка карты или нет, вам просто нужно запросить в своемquad-tree.
Кроме того, quad-tree может быть полезным для других задач, не связанных с туманом войны.Например, вы можете захотеть найти ближайшего «работника» с указанными координатами (x,y)
или хотите нанести некоторый урон по области всем подразделениям в регионе.