slab-decomposition
v1.0.3
Published
Slab decomposition data structure for 2D vertical ray queries
Downloads
124,121
Maintainers
Readme
slab-decomposition
Given a collection of line segments, constructs a slab decomposition for the purpose of point location queries. This implementation uses a functional red-black tree to store the slabs, requires O(n log(n)) space and answers vertical ray queries in O(log(n)) time.
Example
var makeSlab = require("slab-decomposition")
var slabs = makeSlab([
[[0, 0], [10, 10]],
[[10,10], [20, 0]],
[[5, 5], [20, 0]]
])
for(var i=-10; i<10; ++i) {
console.log(slabs.castUp([i, -1]))
}
Install
npm install slab-decomposition
API
Constructor
var slabs = require("slab-decomposition")(segments)
Constructs a slab decomposition from the segments
segments
is a collection of line segments which only overlap at their end points
Returns A slab decomposition data structure
Methods
slabs.castUp(point)
Casts a vertical ray from point
going upward along [0,1]
. Returns the index of the first segment hit.
point
is the base point of the ray
Returns The index of the first segment hit by point, otherwise -1 if no segment intersects the ray.
Credits
(c) 2014 Mikola Lysenko. MIT License