n
最も近い点を見つけるために、pbrt ソース コードを使用して kdtree を実装しようとしています。3 次元空間に分布する点の配列があり、基準点から特定の距離内にある点の数を計算する必要があります。それで、誰かが私がどのように進むべきかについて私を導くことができますか? 基本的に、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 の期待値が得られません。ヒントのアイデアや提案は大歓迎です。