У меня есть коллекция из 10000 - 100000 сфер, и мне нужно найти самые дальние.
Один простой способ сделать это - просто сравнить все сферы друг с другом и сохранить наибольшее расстояние, но это похоже на настоящий ресурсный алгоритм алгоритма.
Сферы хранятся следующим образом:
Sphere (float x, float y, float z, float radius);
Метод Sphere :: distanceTo (Sphere & s) возвращает расстояние между двумя центральными точками сфер.
Пример:
Sphere *spheres;
float biggestDistance;
for (int i = 0; i < nOfSpheres; i++) {
for (int j = 0; j < nOfSpheres; j++) {
if (spheres[i].distanceTo(spheres[j]) > biggestDistance) {
biggestDistance = spheres[i].distanceTo(spheres[j]) > biggestDistance;
}
}
}
То, что я ищу, - это алгоритм, который каким-то образом циклически просматривает все возможные комбинации, если таковые имеются.
Проект написан на C ++ (что и должно быть), поэтому любые решения, которые только работают на языках, отличных от C / C ++, представляют меньший интерес.