我正在尝试使用 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 的预期值。欢迎任何提示想法或建议。