A Quadtree implementation that supports collision detection for rectangles.

Param: bounds

The outer bounds of the region

Param: options

Additional options which configure the Quadtree

Param: options.maxObjects

The maximum number of objects per node

Param: options.maxDepth

The maximum number of levels within the root Quadtree

Param: options._depth

The depth level of the sub-tree. For internal use

Param: options._root

The root of the quadtree. For internal use

Hierarchy (view full)

Properties

bounds: Rectangle

The bounding rectangle of the region

maxObjects: number

The maximum number of objects allowed within this node before it must split

maxDepth: number

The maximum number of levels that the base quadtree is allowed

depth: number

The depth of this node within the root Quadtree

objects: QuadtreeObject[]

The objects contained at this level of the tree

nodes: Quadtree[]

Children of this node

root: Quadtree

The root Quadtree

INDICES: {
    tl: number;
    tr: number;
    bl: number;
    br: number;
} = ...

A constant that enumerates the index order of the quadtree nodes from top-left to bottom-right.

Type declaration

  • tl: number
  • tr: number
  • bl: number
  • br: number

Accessors

Methods

  • Split this node into 4 sub-nodes.

    Returns Quadtree

    The split Quadtree

  • Clear the quadtree of all existing contents

    Returns Quadtree

    The cleared Quadtree

  • Add a rectangle object to the tree

    Parameters

    Returns Quadtree[]

    The Quadtree nodes the object was added to.

  • Remove an object from the quadtree

    Parameters

    • target: any

      The quadtree target being removed

    Returns Quadtree

    The Quadtree for method chaining

  • Remove an existing object from the quadtree and re-insert it with a new position

    Parameters

    Returns Quadtree[]

    The Quadtree nodes the object was added to

  • Get all the objects which could collide with the provided rectangle

    Parameters

    • rect: Rectangle

      The normalized target rectangle

    • Optional options: {
          collisionTest: Function;
          _s: Set<any>;
      } = {}

      Options affecting the collision test.

      • collisionTest: Function

        Function to further refine objects to return after a potential collision is found. Parameters are the object and rect, and the function should return true if the object should be added to the result set.

      • _s: Set<any>

        The existing result set, for internal use.

    Returns Set<any>

    The objects in the Quadtree which represent potential collisions

  • Obtain the leaf nodes to which a target rectangle belongs. This traverses the quadtree recursively obtaining the final nodes which have no children.

    Parameters

    • rect: Rectangle

      The target rectangle.

    Returns Quadtree[]

    The Quadtree nodes to which the target rectangle belongs

  • Obtain the child nodes within the current node which a rectangle belongs to. Note that this function is not recursive, it only returns nodes at the current or child level.

    Parameters

    • rect: Rectangle

      The target rectangle.

    Returns Quadtree[]

    The Quadtree nodes to which the target rectangle belongs

  • Identify all nodes which are adjacent to this one within the parent Quadtree.

    Returns Quadtree[]

  • Private

    Visualize the nodes and objects in the quadtree

    Parameters

    • Optional objects: boolean = {}

      Visualize the rectangular bounds of objects in the Quadtree. Default is false.

    Returns void