Kdtree Lookup: PBRT Исходный код
Я пытаюсь реализовать kdtree, используя исходный код pbrt для поиска n
ближайшие точки. У меня есть массив точек, распределенных по трехмерному пространству, и мне нужно вычислить количество точек, которые находятся на заданном расстоянии от контрольной точки. Так может ли кто-нибудь наставить меня, как мне поступить? По сути, я использую тот же процесс поиска (PhotonProcess), который упоминается в integrators/photonmap.cpp. Но каким-то образом я получаю странные результаты. Вот небольшая часть кода, который я использую.
const uint32_t nAbsorptionPhotons = 10; //photons to be found
PhotonProcess proc(nAbsorptionPhotons,arena.Alloc<ClosePhoton>(nAbsorptionPhotons));
float searchDist = 0.f;
Photon p;
p.p.x = 50; //just a reference point set arbitrarily to 50
p.p.y = 50;
p.p.z = 50;
searchDist = 0;
while (proc.nFound < nAbsorptionPhotons) {
float md2 = searchDist;
AbsorptionMap->Lookup(p.p, proc, md2);
searchDist += 1.f;
}
printf("SearchDistance is %f \n", searchDist);
Я не получаю ожидаемое значение searchdist. Любые намеки на идеи или предложения приветствуются.