Skip to content

Canvas rendering of random dots connected to nearest neighbors

Notifications You must be signed in to change notification settings

sergiks/nearest-neighbor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nearest-neighbor

Canvas rendering of random dots connected to nearest neighbors

Поиск ближайших точек

Поиск ближайших точек в радиусе, не более, чем заданный.

Генерируется 200 случайных точек на плоскости, им задаётся случайное направление и скорость движения. Каждый кадр вычисляются новые положения точек и ищутся ближайшие к ним на расстоянии не более R. К обнаруженным ближайшим соседям рисуется ребро.

Зачем

Заинтересовал вопрос на Тостере.

Алгоритм

Сортируем массив точек по их X-координате. Двигаемся слева направо, выбирая очередную точку.

Смотрим от неё влево (чтобы не проверять одну связь дважды, выбираем полуплоскость от точки) и отбираем только те точки, чей X отличается не более, чем на radius.

Из них смотрим только на те, у которых Y не более, чем на radius отличается (уже в любую сторону: и вверх и вниз).

У них проверяем уже евклидово расстояние – корень из суммы квадратов расстояний по X и по Y – чтобы было не больше radius. У таких есть «связь» – рисуем им ребро.

Демо

Работающий fiddle.

About

Canvas rendering of random dots connected to nearest neighbors

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published