2D Spatial Map for javascript
https://davidfig.github.io/spatialmap/
npm install yy-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>
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();
}
);
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] |
removes existing object from the map
Kind: instance method of SpatialMap
Param | Type |
---|---|
object | object |
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] |
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 |
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 |
helper function to evaluate proper cell size
Kind: instance method of SpatialMap
Returns: number
- the average number of entries in each bucket
helper function to evaluate proper cell size
Kind: instance method of SpatialMap
Returns: number
- the largest sized bucket
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