найти все точки в диапазоне к любой точке другого набора
У меня есть два набора точек А и Б.
Я хочу найти все точки в B которые находятся в определенном диапазоне г кгде точка б в Б Говорят, что в пределах диапазона г к если есть хотя бы одна точка в чье (евклидово) расстояние до б равно или меньше r.
Каждый из обоих наборов точек является согласованным набором точек. Они генерируются из местоположений вокселей двух непересекающихся объектов.
В 1D эта проблема довольно проста: все точки B в течение [мин (А)-р макс (А) + Г]
Но я в 3D.
Каков наилучший способ сделать это?
В настоящее время я постоянно ищу каждую точку в все точки в B что в пределах диапазона, используя некоторый алгоритм KNN (то есть. Matlab 's rangesearch), а затем объединить все эти наборы. Но у меня возникло ощущение, что должен быть лучший способ сделать это. Я'я бы предпочел высокоуровневое / векторизованное решение в matlab, но псевдокод тоже подойдет :)
Я также подумал о том, чтобы написать все точки для изображений и использовать расширение изображений на объекте A с радиусом r. Но это звучит как накладные расходы.