Как эффективно хранить игровые объекты в квадродереве

0

Я реализую структуру квадрантов, чтобы упростить коллизионный код. но я не уверен в том, что для этого лучше всего. В настоящее время quadtree создает поддеревья во время настройки до заданной максимальной глубины, затем я вставляю объекты в соответствующее дерево, для использования в генерации пары (фактическая математика). Тем не менее, я слышал о других подходах, которые генерируют только поддеревья, когда хранится определенное количество объектов. Я знаю, что мой метод имеет пространственные накладные расходы, но может быть быстрее вычислить во время циклов обновления. Какой был бы лучший способ справиться с этим?

Теги:
quadtree

1 ответ

1
Лучший ответ

Один из подходов состоит в том, чтобы хранить k элементов в каждом узле, начиная с одного родительского узла, который охватывает все пространство столкновения. При вставке элемента k + 1 вы разделяете пространство и помещаете новый элемент в правильный квадрант.

Кроме того, вы можете использовать этот подход для статического распределения структуры данных, предполагая, что вы знаете максимальное количество узлов, которые будут использоваться, и что будет максимальная плотность. Для этого требуется фиксированный массив узлов и элементов, предназначенных для жизни приложения, но он позволяет избежать дорогостоящих динамических распределений, что должно быть усилением скорости.

  • 0
    Как механика переполнения?
  • 0
    Да, поэтому квадродерево расширяется адаптивно. Это также хорошо, потому что вы можете просто определить каждый узел в дереве, чтобы он содержал только определенное количество элементов. В моем собственном коде у меня есть полностью статически распределенное дерево квадов, которое предполагает некоторое максимальное количество узлов.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню