2011-12-23 2 views
3

Я ищу, чтобы сделать кучу дистанционных запросов в симуляции, и предпочел бы не перебирать все точки. (N ** 2 не масштабируется так хорошо, оказывается).Реализация твердого k-d дерева в javascript?

Есть ли твердое k-d tree (или другое шариковое дерево, я полагаю) в javascript, который любой может порекомендовать?

ответ

7

Вот еще довольно хорошая реализация, которая может оказаться полезной (отказ от ответственности - Я автор):

https://github.com/ubilabs/kd-tree-javascript

+0

Можно ли создать экземпляр без каких-либо элементов? Планируете ли вы реализовать функцию, которая извлекает все элементы путем эффективной ходьбы по дереву, а не путем вызова ближайшего без ограничения расстояния? Почему функция расстояния иногда проходит по всему объекту и иногда проходит только по размерам? – light24bulbs

2

Поздний ответ, но это хороший один https://github.com/dbotha/Javascript-k-d-tree (отказ от ответственности - я знаю автора)

+1

Это хорошо, но в настоящее время оно реализовано только для двух измерений - словом, это двухмерное дерево, а не дерево k-d. –

+0

Черт возьми, совсем забыл об этом (я использовал его только для чистого 2d недавно), в какой-то момент сделайте это истинным KD, с другой стороны, это не должно быть слишком сложно, чтобы кто-то еще мог ... –

0

RBush - еще одна реализация R-дерева javascript.

7

Вот библиотека, которую я написал:

В Chrome это до несколько порядков быстрее, чем kdtree Ubilabs' и поддерживает больший набор запросов (ортогональный диапазон запроса и ограничивающая сфера). Вот ссылка на результаты тестов для последней версии Google Chrome.

Он использует CommonJS/НМП, но прекрасно работает с browserify.