2012-09-25 22 views
7

He implementado un 2-dimensional k-d tree en Javascript (check it out on GitHub), y lo estoy usando para las búsquedas del vecino más cercano junto con D3.Búsqueda de vecino más cercano en D3

Me enteré de que hay a quadtree implementation en D3, pero también descubrí que la documentación de la API es escasa y las búsquedas de Google no son fructíferas. Prefiero usar una biblioteca bien viajada que mi propia rueda reinventada cuando sea posible.

¿Cómo se realiza una búsqueda del vecino más cercano usando árbol cuádruple de D3? Por vecino más cercano, es decir:

  • pueblan el árbol cuádruple con puntos de 2 dimensiones
  • Busque el punto más cercano árbol cuádruple-contenido a un nuevo punto que no necesariamente existe en el árbol cuádruple
+0

Por curiosidad y nada de lo contrario, ¿para qué estás usando un JS KD Tree? –

+0

@Sajjan Tengo s en un y en mousemove se resalta el círculo más cercano a la posición del mouse. Es muy suave y se escala bien porque las búsquedas de vecinos más cercanos en un árbol K-D bidimensional son O (log n). –

+0

¡Genial! ¿Sería posible compartir su código (a menos, por supuesto, que sea propietario o privado), creo que podría aprender mucho de él. –

Respuesta

4

La demostración de cepillado en realidad no encuentra al vecino más cercano, sino que encuentra los puntos de cuadribús contenidos en un rectángulo dado. (Trate de cepillarse un rectángulo vacío y no necesariamente visitar sus vecinos más cercanos.)

I bifurcada un ejemplo que se encuentra de manera eficiente el vecino más cercano en el árbol cuádruple a un punto arbitrario - ver http://bl.ocks.org/patricksurry/6478178

Cuestiones relacionadas