var SpatialHash = function(cellSize) {
this.idx = {};
this.cellSize = cellSize;
}
SpatialHash.prototype.insert = function(x, y, obj) {
var cell = [];
var keys = this.keys(x,y);
for(var i in keys) {
var key = keys[i];
if(key in this.idx) {
cell = this.idx[key];
} else {
this.idx[key] = cell;
}
if(cell.indexOf(obj) == -1)
cell.push(obj);
}
}
SpatialHash.prototype.query = function(x, y) {
var key = this.key(x, y);
if(this.idx[key] != undefined)
return this.idx[key];
return [];
}
SpatialHash.prototype.keys = function (x, y) {
var o = this.cellSize / 2;
return [this.key(x-o, y+0),
this.key(x-0, y+0),
this.key(x+o, y+0),
this.key(x-o, y+o),
this.key(x-0, y+o),
this.key(x+o, y+o),
this.key(x-o, y-o),
this.key(x-0, y-o),
this.key(x+o, y-o)];
}
SpatialHash.prototype.key = function(x, y) {
var cellSize = this.cellSize;
x = Math.floor(x/cellSize)*cellSize;
y = Math.floor(y/cellSize)*cellSize;
return x.toString() + ":" + y.toString();
}
Monday, July 04, 2011
Spatial Hash in Javascript, for 2D.
Subscribe to:
Post Comments (Atom)
Popular Posts
-
These are the robots I've been working on for the last 12 months. They each weigh about 11 tonnes and have a 17 meter reach. The control...
-
So, you've created a car prefab using WheelCollider components, and now you can apply a motorTorque to make the whole thing move along. ...
-
The procedural planet package has been updated to version 1.4, and you can see the new demo here . It features better city light control, be...
-
Why would I ask that question? Python 3 has been available for some time now, yet uptake is slow. There aren't a whole lot of packages i...
-
I've just finished refactoring an awful C# class. I had been delaying the job for a while because I didn't want to do it. Then, whil...
-
Summary: NodeJS wins. Test Program ab -n 10000 -c 5 http://localhost/ Gevent Code from gevent import wsgi class WebServer(object): def a...
-
Often, when building a game, you need to test if objects are colliding. The objects could be spaceships, rocks, mouse pointers, laser beams....
-
Dear Lazyweb. Imagine a nice RESTful interface for working with Tags. The URL: /tags/ will return a list of all the tags. The URL: /tags/fo...
-
I have just spent an hour trying to track down a weird bug in some Javascript interpolation code. The offending code looks like this: var n ...
-
After my last post, I decided to benchmark the scaling properties of Stackless, Kamaelia, Fibra using the same hackysack algorithm. Left axi...
3 comments:
Thanks for bring oarsome. Can you maek a 3d version?
would be interesting to see a comparison of how different hash functions perform
This looks great! Sorry to bother, but I was wonderingif you have a working example\demo of this? I'm new to the whole Javscript development thing, and while I can just about follow this code, making that leap into an application is proving tricky!
Thanks in advance!:)
Post a Comment