0.1.0 • Published 13 years ago
n-body-pairs v0.1.0
n-body-pairs
Given a collection of spheres with equal radii, find all pairwise intersections.
Usage
First install using npm:
npm install n-body-pairsThen use it as follows:
//Load the library
var nbp = require("n-body-pairs")
//Create some points
var points = [
  [0, 0, 0],
  [1, 0, 0],
  [0, 1, 0],
  [0, 0, 100000000],
  [0, 0, 100000001]
]
//Report all pairs of points which are within 1.1 units of eachother
nbp(points, 1.1, function(i,j) {
    console.log("Overlap ("+i+","+j+"):", points[i], points[j])
})
//Prints:
//
//  Overlap (0,3): [ 0, 0, 0 ] [ 0, 0, 1 ]
//  Overlap (2,0): [ 0, 1, 0 ] [ 0, 0, 0 ]
//  Overlap (1,0): [ 1, 0, 0 ] [ 0, 0, 0 ]
//  Overlap (4,5): [ 0, 0, 100000000 ] [ 0, 0, 100000001 ]
//nbp(points, radius, callback(a,b)[, storage])
Computes all pairwise overlaps
- pointsis an array of points
- radiusis the radius of the overlap query
- callback(a,b)is a function which is called on each pair of points. If it returns a truthy value, then iteration is terminated.
- storagean optional storage data structure, created using allocateStorage. If not specified, it is created upon running the algorithm.
Time Complexity: O(points.length * dimension * 2^dimension * log(points.length) + number of intersections)
Space Complexity: Size of storage is O(points.length * 2^dimension)
nbp.allocateStorage(max_points, dimension)
Reserves space for an intermediate storage data structure
- max_pointsis the initial capacity of the storage
- dimensionis the dimension of the point set
Returns: A new storage object for resolving the overlap queries
nbp.resizeStorage(storage, max_points, dimension)
Resizes the storage data structure
- storageis the data structure to resize
- max_pointsis the new capacity of the storage
- dimensionis the dimension of the point set
Credits
(c) 2013 Mikola Lysenko. BSD License