Решение, которое я нашел, заключается в преобразовании евклидовых координат в «гиперсферические» координаты. Она похожа на сферическую систему координат, за исключением того, что вы добавляете дополнительный угол с диапазоном [0, pi) для каждого дополнительного измерения, превышающего три.
После этого я могу отсортировать список точек по их расстоянию от начала координат и провести итерацию, сравнивая каждую точку в списке с первым элементом, ища перекрывающиеся углы. после каждой итерации вы удаляете первый элемент в списке и все элементы, которые были обнаружены как заблокированные. затем начните сначала с нового первого элемента (ближайшего элемента).
Не знаю, найдет ли кто-нибудь это полезным, но я все равно должен был ответить.