spatialMap
2D Spatial Map for javascript
Live Example with Source
https://davidfig.github.io/spatialmap/
Installation
npm install yy-spatialmap
API Reference
SpatialMap
Kind: global class
-
SpatialMap
- new SpatialMap(cellSize, width, height, options)
- .insert(object, AABB)
- .remove(object)
-
.query(AABB) ⇒
Array.<object>
-
.queryCallbackArticle(AABB, callback) ⇒
boolean
-
.queryCallback(AABB, callback) ⇒
boolean
-
.getAverageSize() ⇒
number
-
.getLargest() ⇒
number
-
.getBuckets() ⇒
Array.<object>
new SpatialMap(cellSize, width, height, options)
2D spatial map
Param | Type | Description |
---|---|---|
cellSize | number |
used to create map |
width | number |
of world |
height | number |
of world |
options | object |
|
options.update | boolean |
keep a second list of elements to enable update |
Example
var map = new SpatialMap();
// use your own 2D graphics libraries--I like PIXI.js
var circle = new Circle(10, 10, 5);
// each object must have an AABB bounding box [x1, y1, x2, y2],
// see yy-intersects (github:davidfig/intersects) for a library that provides this with various shapes
circle.AABB = [5, 5, 10, 10];
map.insert(circle);
// returns the circle
var results = map.query([0, 0, 10, 10]);
// or iterate over the results to avoid creating new arrays
map.query([0, 0, 10, 10],
function(object)
{
object.draw();
}
);
spatialMap.insert(object, AABB)
inserts an object into the map (also removes object from last insertion) side effect: adds object.spatial to track last insertion
Kind: instance method of SpatialMap
Param | Type | Description |
---|---|---|
object | object |
|
AABB | Array.<number> |
bounding box [x1, y1, x2, y2] |
spatialMap.remove(object)
removes existing object from the map
Kind: instance method of SpatialMap
Param | Type |
---|---|
object | object |
Array.<object>
spatialMap.query(AABB) ⇒ returns an array of objects contained within bounding box NOTE: this may include duplicates
Kind: instance method of SpatialMap
Returns: Array.<object>
- search results
Param | Type | Description |
---|---|---|
AABB | Array.<number> |
bounding box to search [x1, y1, x2, y2] |
boolean
spatialMap.queryCallbackArticle(AABB, callback) ⇒ iterates through objects in the same buckets as article stops iterating if the callback returns true
Kind: instance method of SpatialMap
Returns: boolean
- true if callback returned early
Param | Type | Description |
---|---|---|
AABB | Array.<number> |
bounding box to search [x1, y1, x2, y2] |
callback | function |
boolean
spatialMap.queryCallback(AABB, callback) ⇒ iterates through objects contained within bounding box stops iterating if the callback returns true
Kind: instance method of SpatialMap
Returns: boolean
- true if callback returned early
Param | Type | Description |
---|---|---|
AABB | Array.<number> |
bounding box to search [x1, y1, x2, y2] |
callback | function |
number
spatialMap.getAverageSize() ⇒ helper function to evaluate proper cell size
Kind: instance method of SpatialMap
Returns: number
- the average number of entries in each bucket
number
spatialMap.getLargest() ⇒ helper function to evaluate proper cell size
Kind: instance method of SpatialMap
Returns: number
- the largest sized bucket
Array.<object>
spatialMap.getBuckets() ⇒ helper function to evaluate SpatialMap
Kind: instance method of SpatialMap
Returns: Array.<object>
- an array of buckets in the form of [x1, y1, x2, y2]
Copyright (c) 2016 YOPEY YOPEY LLC - MIT License - Documented by jsdoc-to-markdown