encontrar todos os pontos dentro de um intervalo para qualquer ponto de um outro conjunto

Eu tenho dois conjuntos de pontosA eB.

Eu quero encontrar todos os pontos emB que estão dentro de um determinado intervalor paraA, onde um pontob emB é dito estar dentro do alcancer paraA se houver pelo menos um pontoa emA cuja distância (euclidiana) ab é igual ou menor que r.

Cada um dos dois conjuntos de pontos é um conjunto coerente de pontos. Eles são gerados a partir dos locais de voxel de dois objetos não sobrepostos.

Em 1D este problema é bastante fácil: todos os pontos deB dentro de [min (A) -r max (A) +r]

Mas estou em 3D.

Qual é a melhor maneira de fazer isso?

Eu atualmente procuro repetidamente por cada pontoA todos os pontos emB que dentro do alcance usando algum algoritmo knn (ou seja, o rangeearch do matlab) e, em seguida, unir todos esses conjuntos. Mas tenho a sensação de que deveria haver uma maneira melhor de fazer isso. Eu preferiria uma solução vetorizada / de alto nível no matlab, mas o pseudo código também é bom :)

Eu também pensei em escrever todos os pontos para imagens e usar a dilatação da imagem no objeto A com um raio de r. Mas isso soa como uma sobrecarga.

questionAnswers(3)

yourAnswerToTheQuestion