https://github.com/lxsmnsyc/q43
A Quadtree class for JS/ES
https://github.com/lxsmnsyc/q43
aabb axis-aligned-bounding-box data-structures datastructures game game-dev game-development game-engine graph-algorithms quad-tree quadtree space-partitioning tree tree-structure
Last synced: 2 months ago
JSON representation
A Quadtree class for JS/ES
- Host: GitHub
- URL: https://github.com/lxsmnsyc/q43
- Owner: lxsmnsyc
- License: mit
- Created: 2018-07-12T15:16:39.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-07-27T14:55:45.000Z (almost 8 years ago)
- Last Synced: 2025-02-11T22:49:11.646Z (over 1 year ago)
- Topics: aabb, axis-aligned-bounding-box, data-structures, datastructures, game, game-dev, game-development, game-engine, graph-algorithms, quad-tree, quadtree, space-partitioning, tree, tree-structure
- Language: JavaScript
- Size: 388 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Q43
A Quadtree class for JS/ES
## Install
```bash
npm i q43
```
### API
## Q43(ax, ay, bx, by, cap) ⇒ Q43
Create a Q43 instance
**Kind**: global function
| Param | Type | Description |
| --- | --- | --- |
| ax | Number | minimum X of the Q43 boundary |
| ay | Number | minimum Y of the Q43 boundary |
| bx | Number | maximum X of the Q43 boundary |
| by | Number | maximum Y of the Q43 boundary |
| cap | Number | The amount of points a Q43 instance can store. |
## containsX(px) ⇒ Boolean
Check if x is within the Q43's x-axis
**Kind**: global function
| Param | Type |
| --- | --- |
| px | Number |
## containsY(py) ⇒ Boolean
Check if y is within the Q43's x-axis
**Kind**: global function
| Param | Type |
| --- | --- |
| py | Number |
## containsPoint(px, py) ⇒ Boolean
Check if point is within the Q43's x-axis
**Kind**: global function
| Param | Type |
| --- | --- |
| px | Number |
| py | Number |
## subdivide()
Subdivide the Q43 into four equal parts.
## insert(pt) ⇒ Boolean
Insert a point to the Q43
**Kind**: global function
| Param | Type |
| --- | --- |
| pt | Array |
## remove(pt) ⇒ Boolean
Remove a point from the Q43
**Kind**: global function
| Param | Type |
| --- | --- |
| pt | Array |
## query(cond) ⇒ Array
Get all points from the Q43 given a condition
**Kind**: global function
**Returns**: Array - - array of points
| Param | Type | Description |
| --- | --- | --- |
| cond | function | the filter function |
## all() ⇒ Array
Get all points from the Q43
**Kind**: global function
**Returns**: Array - - array of points
## queryBounds(ax, ay, bx, by, cond) ⇒ Array
Get all points from a Q43 that is within a given boundary and passes the condition
**Kind**: global function
**Returns**: Array - - array of points
| Param | Type | Description |
| --- | --- | --- |
| ax | Number | minimum x of the given boundary |
| ay | Number | minimum y of the given boundary |
| bx | Number | maximum x of the given boundary |
| by | Number | maximum y of the given boundary |
| cond | function | a filter function, optional |
## queryRange(px, py, radius, cond) ⇒ Array
Gets all points within the radius of another point from the Q43
**Kind**: global function
| Param | Type | Description |
| --- | --- | --- |
| px | Number | |
| py | Number | |
| radius | Number | |
| cond | function | filter function, optional |
## for(handler)
Iterates all points in the Q43 and passes them to a handler function
**Kind**: global function
| Param | Type |
| --- | --- |
| handler | function |
## forBounds(ax, ay, bx, by, handler)
Iterates all points in the Q43 that are within the bounds
and passes them to a handler function.
**Kind**: global function
| Param | Type |
| --- | --- |
| ax | Number |
| ay | Number |
| bx | Number |
| by | Number |
| handler | function |
## forRange(px, py, radius, handler)
Iterates all points within the radius of another point in the Q43
and passes them to a handler.
**Kind**: global function
| Param | Type |
| --- | --- |
| px | Number |
| py | Number |
| radius | Number |
| handler | function |
## rebuild() ⇒ Q43
This is useful for rebuilding a quadtree whose points have updated coordinates.
## update()
Unlike the rebuild method, the update method does not restore subdivided empty Q43s.
## size() ⇒ Number
Calculates the amount of points a Q43 has.
## draw(ctx, tree, point)
For debugging purposes
**Kind**: global function
| Param | Type |
| --- | --- |
| ctx | CanvasRenderingContext2D |
| tree | Boolean |
| point | Boolean |