Dado un conjunto de coordenadas [x,y][] . Por ejemplo, [[0,0], [5,10]....] , ¿cómo encuentro las N coordenadas más cercanas dado un punto? nearest(point, coordinates, N)
La idea es hacer un análisis geométrico.
const coordinates = [[0,0], [0,1], [0,2], [50,50], [65, 50]] function distance(p, q) { return Math.sqrt(Math.pow(q[0] - p[0], 2) + Math.pow(q[1] - p[1], 2)) } function nearestNCoordinates(point, points, n) { const closestNCoordinates = [] let cur = point for(i=0; i<n; i++) { const closest = points.filter(point => point[0] != cur[0] && point[1] != cur[1]).reduce((a, b) => distance(a, cur) < distance(b, cur) ? a : b); console.log(cur, closest) cur = closest closestNCoordinates.push(closest) } return closestNCoordinates }Mi código actual realmente no funciona. Devuelve puntos de datos replicados y el resultado no es exacto.
Por ejemplo, nearestNCoordinates([0,0], coordinates, 3) devolverán [[50,50], [0,2], [50,50]] , pero espero [[0,1], [0,2], [50,50]] porque en base a las distancias. Esos 3 puntos son los más cercanos a [0,0].