From b452c7a305003d1c1266f24d166b8adf99db520d Mon Sep 17 00:00:00 2001 From: cignoni Date: Thu, 28 Aug 2014 01:53:58 +0000 Subject: [PATCH] Changed the wrapper for poisson disk sampling to use the exact pruning option if radius is not specified. Corrected bug in the exact pruning that failed to return radius in some cases --- vcg/complex/algorithms/point_sampling.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/vcg/complex/algorithms/point_sampling.h b/vcg/complex/algorithms/point_sampling.h index c446a6d3..385e525d 100644 --- a/vcg/complex/algorithms/point_sampling.h +++ b/vcg/complex/algorithms/point_sampling.h @@ -1527,7 +1527,7 @@ static void PoissonDiskPruningByNumber(VertexSampler &ps, MeshType &m, } while(RangeMaxRadNum > sampleNum); - float curRadius; + float curRadius=RangeMaxRad; int iterCnt=0; while(iterCnt sampleNumMax) ) @@ -1905,7 +1905,7 @@ void PoissonSampling(MeshType &m, // the mesh that has to be sampled typename tri::SurfaceSampling::PoissonDiskParam pp; int t0=clock(); - if(sampleNum>0) radius = tri::SurfaceSampling::ComputePoissonDiskRadius(m,sampleNum); +// if(sampleNum>0) radius = tri::SurfaceSampling::ComputePoissonDiskRadius(m,sampleNum); if(radius>0 && sampleNum==0) sampleNum = tri::SurfaceSampling::ComputePoissonSampleNum(m,radius); pp.pds.sampleNum = sampleNum; @@ -1928,7 +1928,8 @@ void PoissonSampling(MeshType &m, // the mesh that has to be sampled pp.adaptiveRadiusFlag=true; pp.radiusVariance=radiusVariance; } - tri::SurfaceSampling::PoissonDiskPruning(pdSampler, MontecarloMesh, radius,pp); + if(sampleNum==0) tri::SurfaceSampling::PoissonDiskPruning(pdSampler, MontecarloMesh, radius,pp); + else tri::SurfaceSampling::PoissonDiskPruningByNumber(pdSampler, MontecarloMesh, sampleNum, radius,pp); int t2=clock(); pp.pds.totalTime = t2-t0; }