Better comments clarifying the purpose of Samplers and Algorithms for sampling

This commit is contained in:
Paolo Cignoni 2009-01-12 16:01:49 +00:00
parent 1a05696eb5
commit 417c52b7b0
1 changed files with 11 additions and 11 deletions
vcg/complex/trimesh

View File

@ -21,15 +21,15 @@
* * * *
****************************************************************************/ ****************************************************************************/
/**************************************************************************** /****************************************************************************
History
$Log: sampling.h,v $
The sampling Class has a set of static functions, that you can call to sample the surface of a mesh. The sampling Class has a set of static functions, that you can call to sample the surface of a mesh.
Each function is templated on the mesh and on a Sampler object s. Each function is templated on the mesh and on a Sampler object s.
Each function calls many time the sample object with the sampling point as parameter. Each function calls many time the sample object with the sampling point as parameter.
Sampler Classes and Sampling algorithmns are independent.
Sampler classes exploits the sample that are generated with various algorithms.
So for example you can compute hausdorf distance (that is a sampler) using various
sampling strategies (montcarlo, stratified etc)
****************************************************************************/ ****************************************************************************/
#ifndef __VCGLIB_POINT_SAMPLING #ifndef __VCGLIB_POINT_SAMPLING
@ -108,7 +108,7 @@ private:
vcg::Box3<ScalarType> convertToBBox() vcg::Box3<ScalarType> convertToBBox()
{ {
vcg::Box<ScalarType> box3(center, halfedge); vcg::Box3<ScalarType> box3(center, halfedge);
return box3; return box3;
} }
}; // end class Cell }; // end class Cell
@ -676,7 +676,7 @@ static void Poissondisk(MetroMesh &m, VertexSampler &ps, int sampleNum, int vers
{ {
// active cell list (max 10 levels of subdivisions) // active cell list (max 10 levels of subdivisions)
std::vector<Cell *> activeCells[10]; std::vector<Cell *> activeCells[10];
std::vector<Cell *>::iterator cellIt; typename std::vector<Cell *>::iterator cellIt;
// just in case... // just in case...
for (int i = 0; i < 10; i++) for (int i = 0; i < 10; i++)
@ -712,10 +712,10 @@ static void Poissondisk(MetroMesh &m, VertexSampler &ps, int sampleNum, int vers
// sampling algorithm (version 1 - "Projection-based") // sampling algorithm (version 1 - "Projection-based")
// --------------------------------------------------- // ---------------------------------------------------
// //
// - extract a cell (C) from the active cell list (proportional to cell's volume) // - extract a cell (C) from the active cell list (with probability proportional to cell's volume)
// - generate a sample inside C and project it on the mesh // - with a probability proportional to the intersection between the surface and the cell, generate a sample inside C and project it on the mesh
// - if the sample violated the radius constrain discard it, subdivide the cell in eight cells // - if the sample violates the radius constrain discard it, subdivide the cell in eight cells
// and added them to the active cell list // and add them to the active cell list
// - iterate until the active cell list is empty or a pre-defined number of subdivisions is reached // - iterate until the active cell list is empty or a pre-defined number of subdivisions is reached
// //