josue / spatial-hash-table
2D hash table for fast edges-touching-circle retrieval
Installs: 20
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/josue/spatial-hash-table
Requires
- php: >=7.0.15
This package is not auto-updated.
Last update: 2025-11-09 05:50:21 UTC
README
Using Composer, just add it to your composer.json by running:
composer require josue/spatial-hash-table
Description
You can throw edges and points at it and than make fast proximity queries in a fixed radius (set in the constructor).
Usage
Example
<?php use SpatialHashTable\BiHashTable; use SpatialHashTable\SupportedGeometries\Edge; use SpatialHashTable\SupportedGeometries\Point; $b = new BiHashTable(1); $b->addElement(new Edge(new Point(-1.5, -1), new Point( -0.5, -0.5), 100)); $b->addElement(new Edge(new Point(1.25, 1.5), new Point( 0.5, 0.75), 200)); $b->addElement(new Edge(new Point(1.75, 1.75), new Point( 1.75, 1.25), 300)); $b->addElement(new Point(0.5, 0.5, 400)); echo json_encode($b->getAllElementsInCircle(new Point(0,0)));
And the output is:
{
"100": {
"id": 100,
"p1": {
"id": 0,
"x": -1.5,
"y": -1
},
"p2": {
"id": 0,
"x": -0.5,
"y": -0.5
}
},
"200": {
"id": 200,
"p1": {
"id": 0,
"x": 1.25,
"y": 1.5
},
"p2": {
"id": 0,
"x": 0.5,
"y": 0.75
}
},
"400": {
"id": 400,
"x": 0.5,
"y": 0.5
}
}
