Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tuurdutoit/space-grid
A very simple spatial grid implementation, designed to speed up some calculations
https://github.com/tuurdutoit/space-grid
Last synced: 10 days ago
JSON representation
A very simple spatial grid implementation, designed to speed up some calculations
- Host: GitHub
- URL: https://github.com/tuurdutoit/space-grid
- Owner: TuurDutoit
- Created: 2016-01-21T13:42:22.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2016-01-21T13:42:29.000Z (about 9 years ago)
- Last Synced: 2024-04-26T08:21:34.841Z (9 months ago)
- Language: JavaScript
- Size: 1.95 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
space-grid
==========
v0.0.1A very simple spatial grid implementation, designed to speed some calculations.
Every cell is either empty or contains one item. This can speed up spatial calculations by focusing on just a few cells, instead of all of space.## API
This module exposes a single constructor, Grid. Every grid has a `grid` property, that is an object. All of space is divided into cells of customizable size, referenced by a string in the following format: `x,y`, where x and y are the indices of the cell.__Examples (with cell size 10x10):__
* A point at (5, 5) would fall into cell `0,0`
* A point at (20, 20) would fall into cell `2,2`
* A point at (-11, 34) would fall into cell `-2,3`__Note:__ the methods `add`, `remove`, `get`, `hasItem` and `isEmpty` have corresponding methods that take in cell indices instead of point coordinates. These methods have the same name, but with an I (capital i) appended, so `add` becomes `addI`.
__Note:__ unless otherwise noted, methods return `this`, for chaining.
### new Grid(number cellWidth, number? cellHeight)
Makes a new Grid.* cellWidth: the width of the cells
* cellHeight the height of the cells. If not provided, falls back to `cellWidth`### grid.reset()
Reset (empty) the grid.### grid.size(number cellWidth, number? cellHeight)
Sets the size of the grid and calls `grid.reset()`.* cellWidth: the width of the cells
* cellHeight the height of the cells. If not provided, falls back to `cellWidth`### grid.str(number x, number y) : string
Returns the unique name of the cell a point at (x, y) would fall into, in the following format: `x,y` (as a string).### grid.add(any item, numer x, number y)
Adds `item` to the correct cell (i.e. the cell a point at (x, y) falls into).### grid.remove(number x, number y)
Remove the item from the cell a point at (x, y) would fall into, if any.### grid.get(number x, number y) : any
Get the item from the cell a point at (x, y) would fall into.### grid.hasItem(number x, number y) : boolean
Check whether the cell a point at (x, y) would fall into contains an item.### grid.isEmpty(numer x, number y) : boolean
Check whether the cell a point at (x, y) would fall into is empty (i.e. the opposite of `hasItem`).