code: function _quadRetrieveArea(rectData, quad, collisionFunc, els) {
      els = els || {};
  
      if (quad.level < quad.maxLevel) {
        var indexes = collisionFunc(rectData, quad.corners);
  
        for (var i = 0, l = indexes.length; i < l; i++)
          if (quad.nodes[indexes[i]] !== undefined)
            _quadRetrieveArea(
              rectData,
              quad.nodes[indexes[i]],
              collisionFunc,
              els
            );
      } else
        for (var j = 0, m = quad.elements.length; j < m; j++)
          if (els[quad.elements[j].id] === undefined)
            els[quad.elements[j].id] = quad.elements[j];
  
      return els;
    }
docs: Recursively retrieve every elements contained within an rectangular area
  that may or may not be axis-aligned.
  
  @param  {object|array} rectData       The searched area defined either by
  an array of four corners (x, y) in
  the case of a non-axis-aligned
  rectangle or an object with two top
  points (x1, y1), (x2, y2) and height.
  @param  {object}       quad           The searched quad.
  @param  {function}     collisionFunc  The collision function used to search
  for node indexes.
  @param  {array?}       els            The retrieved elements.
  @return {array}                       An array of elements contained in the
  area.