4

我正在尝试使用 pbrt 源代码来实现 kdtree 以查找n最近的点。我有一个分布在 3d 空间上的点数组,我需要计算距参考点给定距离内的点数。那么有人可以指导我如何进行吗?基本上,我使用的是与 integrators/photonmap.cpp 中提到的相同的查找过程 (PhotonProcess)。但不知何故,我最终得到了奇怪的结果。这是我正在使用的代码的一小部分。

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 的预期值。欢迎任何提示想法或建议。

4

0 回答 0