Я пытаюсь использовать квадродерево для обнаружения двухмерных столкновений, но я немного не понимаю, как его реализовать. Прежде всего, у меня было бы квадродерево, содержащее четыре поддерева (по одному, представляющее каждый квадрант), а также набор объектов, которые не помещаются в одно поддерево.
При проверке объекта на коллизии в дереве , Я бы сделал что-то вроде этого (спасибо QuadTree за обнаружение двухмерных столкновений ):
- Проверить объект на столкновения с любыми объектами в текущем узле.
- Для любого поддерева, пространство которого перекрывает объект , recurse.
Чтобы найти все коллизии в дереве квадродерева:
- Сравните каждый объект в текущем узле с другим объектом в текущем узле.
- Проверить каждый объект в текущем узле на соответствие каждому поддереву.
Чтобы вставить в квадродерево:
- Если объект входит в несколько поддеревьев, добавьте его в текущий узел и вернитесь.
- В противном случае, рекурсию в любое поддерево, содержащее его.
Для обновления квадродерева:
- Рекурсия в каждое поддерево.
- Если какой-либо элемент в текущем узле больше не помещается полностью в текущем дереве, переместите его в родительский.
- Если какой-либо элемент в текущем узле помещается в поддерево, вставьте его в поддерево.
Это нормально? Можно ли его улучшить?
задан Community 23 May 2017 в 12:34
поделиться