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