В настоящее время я внедряю систему обнаружения столкновений с использованием квадрантов. Я смог реализовать quadtree, но у меня был вопрос относительно конкретной ситуации. Допустим, что у моей начальной квадранты есть граница 200x200. Так что мой первый уровень суб-quadtrees будет иметь границу:Пытается использовать квадранты для обнаружения столкновений в игре
NW: (0, 0) ~ (100100)
SW: (0, 100) ~ (100, 200)
СВ: (100, 0) ~ (200, 100)
SE: (100, 100) ~ (200, 200)
Допустим, есть квадратный предмет в точке (98, 98), и ее ширина и высота - 5. Я беру центральное положение при вставке их в поддеревья, поэтому этот объект будет помещен в квадрант NW. Однако, так как его ширина и высота равны 5, они технически также относятся ко всем трем трем четвёртаям. Должен ли я проверить, распространяется ли граница объекта на другую сторону квадранта, и если да, добавьте несколько экземпляров в квадрант?
Если вы создаете двумерное обнаружение столкновений, рассмотрите вместо этого использование фиксированной сетки. Это почти наверняка быстрее (особенно если размер ячейки тщательно выбран), потому что это будет операция O (1), чтобы выяснить, какие ячейки занимают объекты. – juzzlin