UNPKG

pts-to-graph

Version:

generate nearest neighbors for a set of 3d points. convert triangle mesh to graph. convert set of 3d points into an graph / ngraph.

30 lines (22 loc) 833 B
var createTree = require('yaot'); function setOfPtsNeighborsFast(sop, _minDist){ //use _minDist for min neighbor distance, or set pt[i].scale for each pt var tree = createTree(); var ptList = []; sop.forEach(function(p){ ptList.push(p[0]); ptList.push(p[1]); ptList.push(p[2]); }); tree.init(ptList); //build tree w pts sop.forEach(function(p,i){ var ptIdsNearby = tree.intersectSphere(p[0], p[1], p[2], _minDist || p[i].scale); //<-- matches is list of ids of pts var ptsNearby = ptIdsNearby.map(function(ptId3){ var ptId = Math.floor(ptId3/3); return sop[ptId]; }); p.neighbors = ptsNearby.filter(pt=>pt!=p); }); sop.octree = tree; return tree; } module.exports = {setOfPtsNeighbors: setOfPtsNeighborsFast};