#include <point_sampling.h>
Classes | |
struct | PoissonDiskParam |
class | RRParam |
Public Types | |
typedef GridStaticPtr < FaceType, ScalarType > | TriMeshGrid |
Static Public Member Functions | |
static void | AllEdge (MetroMesh &m, VertexSampler &ps) |
static void | AllFace (MetroMesh &m, VertexSampler &ps) |
static void | AllVertex (MetroMesh &m, VertexSampler &ps) |
static bool | checkPoissonDisk (MetroMesh &vmesh, SampleSHT &sht, const Point3< ScalarType > &p, ScalarType radius) |
static ScalarType | ComputePoissonDiskRadius (MetroMesh &origMesh, int sampleNum) |
static int | ComputePoissonSampleNum (MetroMesh &origMesh, ScalarType diskRadius) |
static void | ComputePoissonSampleRadii (MetroMesh &sampleMesh, ScalarType diskRadius, ScalarType radiusVariance, bool invert) |
static void | EdgeUniform (MetroMesh &m, VertexSampler &ps, int sampleNum, bool sampleFauxEdge=true) |
static void | FaceSimilar (MetroMesh &m, VertexSampler &ps, int sampleNum, bool dualFlag, bool randomFlag) |
static void | FaceSubdivision (MetroMesh &m, VertexSampler &ps, int sampleNum, bool randSample) |
Compute a sampling of the surface where the points are regularly scattered over the face surface using a recursive longest-edge subdivision rule. | |
static void | FaceSubdivisionOld (MetroMesh &m, VertexSampler &ps, int sampleNum, bool randSample) |
Compute a sampling of the surface where the points are regularly scattered over the face surface using a recursive longest-edge subdivision rule. | |
static void | FaceUniform (MetroMesh &m, VertexSampler &ps, int sampleNum) |
static void | FillAndShuffleFacePointerVector (MetroMesh &m, std::vector< FacePointer > &faceVec) |
static void | FillAndShuffleVertexPointerVector (MetroMesh &m, std::vector< VertexPointer > &vertVec) |
static VertexPointer | getPrecomputedMontecarloSample (Point3i &cell, MontecarloSHT &samplepool) |
static void | Montecarlo (MetroMesh &m, VertexSampler &ps, int sampleNum) |
static void | PoissonDisk (MetroMesh &origMesh, VertexSampler &ps, MetroMesh &montecarloMesh, ScalarType diskRadius, const struct PoissonDiskParam pp=PoissonDiskParam()) |
static void | PoissonDiskPruning (MetroMesh &origMesh, VertexSampler &ps, MetroMesh &montecarloMesh, ScalarType diskRadius, const struct PoissonDiskParam pp=PoissonDiskParam()) |
static CoordType | RandomBaricentric () |
static CoordType | RandomBox (vcg::Box3< ScalarType > box) |
static double | RandomDouble01 () |
static double | RandomDouble01closed () |
static unsigned int | RandomInt (unsigned int i) |
static void | RegularRecursiveOffset (MetroMesh &m, std::vector< Point3f > &pvec, ScalarType offset, float minDiag) |
static math::MarsenneTwisterRNG & | SamplingRandomGenerator () |
static void | SingleFaceRaster (typename MetroMesh::FaceType &f, VertexSampler &ps, const Point2< typename MetroMesh::ScalarType > &v0, const Point2< typename MetroMesh::ScalarType > &v1, const Point2< typename MetroMesh::ScalarType > &v2, bool correctSafePointsBaryCoords=true) |
static int | SingleFaceSimilar (FacePointer fp, VertexSampler &ps, int n_samples_per_edge) |
static int | SingleFaceSimilarDual (FacePointer fp, VertexSampler &ps, int n_samples_per_edge, bool randomFlag) |
static int | SingleFaceSubdivision (int sampleNum, const CoordType &v0, const CoordType &v1, const CoordType &v2, VertexSampler &ps, FacePointer fp, bool randSample) |
static int | SingleFaceSubdivisionOld (int sampleNum, const CoordType &v0, const CoordType &v1, const CoordType &v2, VertexSampler &ps, FacePointer fp, bool randSample) |
static void | StratifiedMontecarlo (MetroMesh &m, VertexSampler &ps, int sampleNum) |
static void | SubdivideAndSample (MetroMesh &m, std::vector< Point3f > &pvec, const Box3< ScalarType > bb, RRParam &rrp, float curDiag) |
static void | Texture (MetroMesh &m, VertexSampler &ps, int textureWidth, int textureHeight, bool correctSafePointsBaryCoords=true) |
static void | VertexAreaUniform (MetroMesh &m, VertexSampler &ps, int sampleNum) |
static void | VertexUniform (MetroMesh &m, VertexSampler &ps, int sampleNum) |
Sample the vertices in a uniform way. Each vertex has the same probabiltiy of being chosen. | |
static void | VertexWeighted (MetroMesh &m, VertexSampler &ps, int sampleNum) |
static ScalarType | WeightedArea (FaceType f) |
static void | WeightedMontecarlo (MetroMesh &m, VertexSampler &ps, int sampleNum) |
Private Types | |
typedef MetroMesh::CoordType | CoordType |
typedef MetroMesh::FaceContainer | FaceContainer |
typedef MetroMesh::FaceIterator | FaceIterator |
typedef MetroMesh::FacePointer | FacePointer |
typedef MetroMesh::FaceType | FaceType |
typedef vcg::SpatialHashTable < FaceType, ScalarType > | MeshSHT |
typedef vcg::SpatialHashTable < FaceType, ScalarType > ::CellIterator | MeshSHTIterator |
typedef vcg::SpatialHashTable < VertexType, ScalarType > | MontecarloSHT |
typedef vcg::SpatialHashTable < VertexType, ScalarType > ::CellIterator | MontecarloSHTIterator |
typedef vcg::SpatialHashTable < VertexType, ScalarType > | SampleSHT |
typedef vcg::SpatialHashTable < VertexType, ScalarType > ::CellIterator | SampleSHTIterator |
typedef MetroMesh::ScalarType | ScalarType |
typedef MetroMesh::VertexIterator | VertexIterator |
typedef MetroMesh::VertexPointer | VertexPointer |
typedef MetroMesh::VertexType | VertexType |
Definition at line 112 of file point_sampling.h.
typedef MetroMesh::CoordType vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::CoordType [private] |
Definition at line 114 of file point_sampling.h.
typedef MetroMesh::FaceContainer vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::FaceContainer [private] |
Definition at line 122 of file point_sampling.h.
typedef MetroMesh::FaceIterator vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::FaceIterator [private] |
Definition at line 120 of file point_sampling.h.
typedef MetroMesh::FacePointer vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::FacePointer [private] |
Definition at line 119 of file point_sampling.h.
typedef MetroMesh::FaceType vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::FaceType [private] |
Definition at line 121 of file point_sampling.h.
typedef vcg::SpatialHashTable<FaceType, ScalarType> vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::MeshSHT [private] |
Definition at line 124 of file point_sampling.h.
typedef vcg::SpatialHashTable<FaceType, ScalarType>::CellIterator vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::MeshSHTIterator [private] |
Definition at line 125 of file point_sampling.h.
typedef vcg::SpatialHashTable<VertexType, ScalarType> vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::MontecarloSHT [private] |
Definition at line 126 of file point_sampling.h.
typedef vcg::SpatialHashTable<VertexType, ScalarType>::CellIterator vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::MontecarloSHTIterator [private] |
Definition at line 127 of file point_sampling.h.
typedef vcg::SpatialHashTable<VertexType, ScalarType> vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::SampleSHT [private] |
Definition at line 128 of file point_sampling.h.
typedef vcg::SpatialHashTable<VertexType, ScalarType>::CellIterator vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::SampleSHTIterator [private] |
Definition at line 129 of file point_sampling.h.
typedef MetroMesh::ScalarType vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::ScalarType [private] |
Definition at line 115 of file point_sampling.h.
typedef GridStaticPtr<FaceType, ScalarType > vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::TriMeshGrid |
Definition at line 1234 of file point_sampling.h.
typedef MetroMesh::VertexIterator vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::VertexIterator [private] |
Definition at line 118 of file point_sampling.h.
typedef MetroMesh::VertexPointer vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::VertexPointer [private] |
Definition at line 117 of file point_sampling.h.
typedef MetroMesh::VertexType vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::VertexType [private] |
Definition at line 116 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::AllEdge | ( | MetroMesh & | m, | |
VertexSampler & | ps | |||
) | [inline, static] |
Definition at line 299 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::AllFace | ( | MetroMesh & | m, | |
VertexSampler & | ps | |||
) | [inline, static] |
Definition at line 288 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::AllVertex | ( | MetroMesh & | m, | |
VertexSampler & | ps | |||
) | [inline, static] |
Definition at line 157 of file point_sampling.h.
static bool vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::checkPoissonDisk | ( | MetroMesh & | vmesh, | |
SampleSHT & | sht, | |||
const Point3< ScalarType > & | p, | |||
ScalarType | radius | |||
) | [inline, static] |
Definition at line 932 of file point_sampling.h.
static ScalarType vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::ComputePoissonDiskRadius | ( | MetroMesh & | origMesh, | |
int | sampleNum | |||
) | [inline, static] |
Definition at line 970 of file point_sampling.h.
static int vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::ComputePoissonSampleNum | ( | MetroMesh & | origMesh, | |
ScalarType | diskRadius | |||
) | [inline, static] |
Definition at line 985 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::ComputePoissonSampleRadii | ( | MetroMesh & | sampleMesh, | |
ScalarType | diskRadius, | |||
ScalarType | radiusVariance, | |||
bool | invert | |||
) | [inline, static] |
Definition at line 992 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::EdgeUniform | ( | MetroMesh & | m, | |
VertexSampler & | ps, | |||
int | sampleNum, | |||
bool | sampleFauxEdge = true | |||
) | [inline, static] |
Definition at line 320 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::FaceSimilar | ( | MetroMesh & | m, | |
VertexSampler & | ps, | |||
int | sampleNum, | |||
bool | dualFlag, | |||
bool | randomFlag | |||
) | [inline, static] |
Definition at line 736 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::FaceSubdivision | ( | MetroMesh & | m, | |
VertexSampler & | ps, | |||
int | sampleNum, | |||
bool | randSample | |||
) | [inline, static] |
Compute a sampling of the surface where the points are regularly scattered over the face surface using a recursive longest-edge subdivision rule.
Definition at line 524 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::FaceSubdivisionOld | ( | MetroMesh & | m, | |
VertexSampler & | ps, | |||
int | sampleNum, | |||
bool | randSample | |||
) | [inline, static] |
Compute a sampling of the surface where the points are regularly scattered over the face surface using a recursive longest-edge subdivision rule.
Definition at line 625 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::FaceUniform | ( | MetroMesh & | m, | |
VertexSampler & | ps, | |||
int | sampleNum | |||
) | [inline, static] |
Definition at line 274 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::FillAndShuffleFacePointerVector | ( | MetroMesh & | m, | |
std::vector< FacePointer > & | faceVec | |||
) | [inline, static] |
Definition at line 235 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::FillAndShuffleVertexPointerVector | ( | MetroMesh & | m, | |
std::vector< VertexPointer > & | vertVec | |||
) | [inline, static] |
Definition at line 246 of file point_sampling.h.
static VertexPointer vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::getPrecomputedMontecarloSample | ( | Point3i & | cell, | |
MontecarloSHT & | samplepool | |||
) | [inline, static] |
Definition at line 923 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::Montecarlo | ( | MetroMesh & | m, | |
VertexSampler & | ps, | |||
int | sampleNum | |||
) | [inline, static] |
Definition at line 393 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::PoissonDisk | ( | MetroMesh & | origMesh, | |
VertexSampler & | ps, | |||
MetroMesh & | montecarloMesh, | |||
ScalarType | diskRadius, | |||
const struct PoissonDiskParam | pp = PoissonDiskParam() | |||
) | [inline, static] |
Compute a Poisson-disk sampling of the surface. The radius of the disk is computed according to the estimated sampling density.
This algorithm is an adaptation of the algorithm of White et al. :
"Poisson Disk Point Set by Hierarchical Dart Throwing" K. B. White, D. Cline, P. K. Egbert, IEEE Symposium on Interactive Ray Tracing, 2007, 10-12 Sept. 2007, pp. 129-132.
Definition at line 1090 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::PoissonDiskPruning | ( | MetroMesh & | origMesh, | |
VertexSampler & | ps, | |||
MetroMesh & | montecarloMesh, | |||
ScalarType | diskRadius, | |||
const struct PoissonDiskParam | pp = PoissonDiskParam() | |||
) | [inline, static] |
Definition at line 1007 of file point_sampling.h.
static CoordType vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::RandomBaricentric | ( | ) | [inline, static] |
Definition at line 354 of file point_sampling.h.
static CoordType vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::RandomBox | ( | vcg::Box3< ScalarType > | box | ) | [inline, static] |
Definition at line 912 of file point_sampling.h.
static double vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::RandomDouble01 | ( | ) | [inline, static] |
Definition at line 146 of file point_sampling.h.
static double vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::RandomDouble01closed | ( | ) | [inline, static] |
Definition at line 152 of file point_sampling.h.
static unsigned int vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::RandomInt | ( | unsigned int | i | ) | [inline, static] |
Definition at line 140 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::RegularRecursiveOffset | ( | MetroMesh & | m, | |
std::vector< Point3f > & | pvec, | |||
ScalarType | offset, | |||
float | minDiag | |||
) | [inline, static] |
Definition at line 1245 of file point_sampling.h.
static math::MarsenneTwisterRNG& vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::SamplingRandomGenerator | ( | ) | [inline, static] |
Definition at line 133 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::SingleFaceRaster | ( | typename MetroMesh::FaceType & | f, | |
VertexSampler & | ps, | |||
const Point2< typename MetroMesh::ScalarType > & | v0, | |||
const Point2< typename MetroMesh::ScalarType > & | v1, | |||
const Point2< typename MetroMesh::ScalarType > & | v2, | |||
bool | correctSafePointsBaryCoords = true | |||
) | [inline, static] |
Definition at line 777 of file point_sampling.h.
static int vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::SingleFaceSimilar | ( | FacePointer | fp, | |
VertexSampler & | ps, | |||
int | n_samples_per_edge | |||
) | [inline, static] |
Definition at line 657 of file point_sampling.h.
static int vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::SingleFaceSimilarDual | ( | FacePointer | fp, | |
VertexSampler & | ps, | |||
int | n_samples_per_edge, | |||
bool | randomFlag | |||
) | [inline, static] |
Definition at line 674 of file point_sampling.h.
static int vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::SingleFaceSubdivision | ( | int | sampleNum, | |
const CoordType & | v0, | |||
const CoordType & | v1, | |||
const CoordType & | v2, | |||
VertexSampler & | ps, | |||
FacePointer | fp, | |||
bool | randSample | |||
) | [inline, static] |
Definition at line 464 of file point_sampling.h.
static int vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::SingleFaceSubdivisionOld | ( | int | sampleNum, | |
const CoordType & | v0, | |||
const CoordType & | v1, | |||
const CoordType & | v2, | |||
VertexSampler & | ps, | |||
FacePointer | fp, | |||
bool | randSample | |||
) | [inline, static] |
Definition at line 555 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::StratifiedMontecarlo | ( | MetroMesh & | m, | |
VertexSampler & | ps, | |||
int | sampleNum | |||
) | [inline, static] |
Definition at line 370 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::SubdivideAndSample | ( | MetroMesh & | m, | |
std::vector< Point3f > & | pvec, | |||
const Box3< ScalarType > | bb, | |||
RRParam & | rrp, | |||
float | curDiag | |||
) | [inline, static] |
Definition at line 1262 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::Texture | ( | MetroMesh & | m, | |
VertexSampler & | ps, | |||
int | textureWidth, | |||
int | textureHeight, | |||
bool | correctSafePointsBaryCoords = true | |||
) | [inline, static] |
Definition at line 1219 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::VertexAreaUniform | ( | MetroMesh & | m, | |
VertexSampler & | ps, | |||
int | sampleNum | |||
) | [inline, static] |
Sample the vertices in a uniform way. Each vertex has a probability of being chosen that is proportional to the area it represent.
Definition at line 215 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::VertexUniform | ( | MetroMesh & | m, | |
VertexSampler & | ps, | |||
int | sampleNum | |||
) | [inline, static] |
Sample the vertices in a uniform way. Each vertex has the same probabiltiy of being chosen.
Definition at line 259 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::VertexWeighted | ( | MetroMesh & | m, | |
VertexSampler & | ps, | |||
int | sampleNum | |||
) | [inline, static] |
Sample the vertices in a weighted way. Each vertex has a probability of being chosen that is proportional to its quality. It assumes that you are asking a number of vertices smaller than nv; Algorithm: 1) normalize quality so that sum q == 1; 2) shuffle vertices. 3) for each vertices choose it if rand > thr;
Definition at line 177 of file point_sampling.h.
static ScalarType vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::WeightedArea | ( | FaceType | f | ) | [inline, static] |
Definition at line 422 of file point_sampling.h.
static void vcg::tri::SurfaceSampling< MetroMesh, VertexSampler >::WeightedMontecarlo | ( | MetroMesh & | m, | |
VertexSampler & | ps, | |||
int | sampleNum | |||
) | [inline, static] |
Compute a sampling of the surface that is weighted by the quality the area of each face is multiplied by the average of the quality of the vertices. So the a face with a zero quality on all its vertices is never sampled and a face with average quality 2 get twice the samples of a face with the same area but with an average quality of 1;
Definition at line 431 of file point_sampling.h.