Finde alle Punkte innerhalb eines Bereichs zu einem beliebigen Punkt einer anderen Menge

Ich habe zwei Sätze von PunktenA undB.

Ich möchte alle Punkte in findenB das sind in einem bestimmten Bereichr zuA, wo ein Punktb imB soll in Reichweite seinr zuA wenn es mindestens einen Punkt gibta imA deren (euklidische) Entfernung zub ist gleich oder kleiner als r.

Jede der beiden Punktmengen ist eine zusammenhängende Punktmenge. Sie werden aus den Voxelpositionen zweier sich nicht überlappender Objekte generiert.

In 1D ist dieses Problem ziemlich einfach: alle Punkte vonB innerhalb von [min (A) -r max (A) +r]

Aber ich bin in 3D.

Wie geht das am besten?

Ich suche derzeit wiederholt nach jedem Punkt inA Alle Punkte inB das innerhalb des Bereichs mit einem bekannten Algorithmus (dh Matlabs Bereichssuche) und vereinigen Sie dann alle diese Sätze. Aber ich hatte das Gefühl, dass es einen besseren Weg geben sollte, dies zu tun. Ich würde eine hochgradige / vektorisierte Lösung in Matlab bevorzugen, aber Pseudocode ist auch in Ordnung :)

Ich dachte auch daran, alle Punkte auf Bilder zu schreiben und die Bilddilatation auf Objekt A mit einem Radius von r anzuwenden. Aber das klingt nach einem ziemlichen Aufwand.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage