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