## QuadTree(An, pointQuad, maxDepth, maxChildren)

Constructor

#### # new QuadTree(An, pointQuad, maxDepth, maxChildren)

A QuadTree implementation in JavaScript, a 2d spatial subdivision algorithm.

##### Parameters:

Name | Type | Description
--- | --- | ---
`An` | `Object` | object representing the bounds of the top level of the QuadTree. The object should contain the following properties : x, y, width, height
`pointQuad` | `Boolean` | Whether the QuadTree will contain points (true), or items with bounds (width / height)(false). Default value is false.
`maxDepth` | `Number` | The maximum number of levels that the quadtree will create. Default is 4.
`maxChildren` | `Number` | The maximum number of children that a node can contain before it is split into sub-nodes.

See:
  - http://www.mikechambers.com/blog/2011/03/21/javascript-quadtree-implementation/

# Methods

#### # clear()

Clears all nodes and children from the QuadTree

#### # insert(item)

Inserts an item into the QuadTree.

##### Parameters:

Name | Type | Description
--- | --- | ---
`item` | `Object` | `Array` | The item or Array of items to be inserted into the QuadTree. The item should expose x, y properties that represents its position in 2D space.

#### # retrieve(item)

Retrieves all items / points in the same node as the specified item / point. If the specified item overlaps the bounds of a node, then all children in both nodes will be returned.

##### Parameters:

Name | Type | Description
--- | --- | ---
`item` | `Object` | An object representing a 2D coordinate point (with x, y properties), or a shape with dimensions (x, y, width, height) properties.