Quadtree para detección de colisión 2D

Estoy tratando de usar un quadtree para la detección de colisiones en 2D, pero estoy un poco perplejo sobre cómo implementarlo. En primer lugar, tendría un quadtree que contiene cuatro subárboles (uno que representa cada cuadrante), así como una colección de objetos que no caben en un solo subárbol.

Al verificar un objeto por colisiones en el árbol, haría algo como esto (gracias aQuadTree para detección de colisión 2D):

Verifique el objeto por colisiones con cualquier objeto en el nodo actual.Para cualquier subárbol cuyo espacio se superponga con el objeto, recurse.

Para encontrar todas las colisiones dentro de un árbol quadtree:

Verifique cada objeto en el nodo actual contra el otro objeto en el nodo actual.Verifique cada objeto en el nodo actual contra cada subárbol.

Para insertar en un quadtree:

Si el objeto encaja en varios subárboles, agréguelo al nodo actual y regrese.De lo contrario, recurse a cualquier subárbol que lo contenga.

Para actualizar un quadtree:

Recurrir en cada subárbol.Si algún elemento en el nodo actual ya no cabe completamente en el árbol actual, muévalo al padre.Si algún elemento del nodo actual se ajusta a un subárbol, insértelo en el subárbol.

¿Esto está bien? ¿Se puede mejorar?