slightly changed the trivial sampler to make simpler to use all the sampling strategies to just get a coord vector.
This commit is contained in:
parent
7396c30640
commit
44fd7bb2ba
|
|
@ -48,6 +48,15 @@ namespace tri
|
||||||
|
|
||||||
/// Trivial Sampler, an example sampler object that show the required interface used by the sampling class.
|
/// Trivial Sampler, an example sampler object that show the required interface used by the sampling class.
|
||||||
/// Most of the sampling classes call the AddFace method with the face containing the sample and its barycentric coord.
|
/// Most of the sampling classes call the AddFace method with the face containing the sample and its barycentric coord.
|
||||||
|
/// Beside being an example of how to write a sampler it provides a simple way to use the various sampling classes.
|
||||||
|
// For example if you just want to get a vector with positions over the surface You have just to write
|
||||||
|
//
|
||||||
|
// vector<Point3f> myVec;
|
||||||
|
// TrivialSampler<MyMesh> ts(myVec)
|
||||||
|
// SurfaceSampling<MyMesh, TrivialSampler<MyMesh> >::Montecarlo(M, ts, SampleNum);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
template <class MeshType>
|
template <class MeshType>
|
||||||
class TrivialSampler
|
class TrivialSampler
|
||||||
{
|
{
|
||||||
|
|
@ -56,16 +65,36 @@ class TrivialSampler
|
||||||
typedef typename MeshType::VertexType VertexType;
|
typedef typename MeshType::VertexType VertexType;
|
||||||
typedef typename MeshType::FaceType FaceType;
|
typedef typename MeshType::FaceType FaceType;
|
||||||
|
|
||||||
TrivialSampler(){};
|
TrivialSampler()
|
||||||
std::vector<CoordType> sampleVec;
|
{
|
||||||
|
sampleVec = new std::vector<CoordType>();
|
||||||
|
vectorOwner=true;
|
||||||
|
};
|
||||||
|
|
||||||
|
TrivialSampler(std::vector<CoordType> &Vec)
|
||||||
|
{
|
||||||
|
sampleVec = &Vec;
|
||||||
|
sampleVec->clear();
|
||||||
|
vectorOwner=false;
|
||||||
|
};
|
||||||
|
|
||||||
|
~TrivialSampler()
|
||||||
|
{
|
||||||
|
if(vectorOwner) delete sampleVec;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::vector<CoordType> *sampleVec;
|
||||||
|
bool vectorOwner;
|
||||||
|
public:
|
||||||
|
|
||||||
void AddVert(const VertexType &p)
|
void AddVert(const VertexType &p)
|
||||||
{
|
{
|
||||||
sampleVec.push_back(p.cP());
|
sampleVec->push_back(p.cP());
|
||||||
}
|
}
|
||||||
void AddFace(const FaceType &f, const CoordType &p)
|
void AddFace(const FaceType &f, const CoordType &p)
|
||||||
{
|
{
|
||||||
sampleVec.push_back(f.P(0)*p[0] + f.P(1)*p[1] +f.P(2)*p[2] );
|
sampleVec->push_back(f.P(0)*p[0] + f.P(1)*p[1] +f.P(2)*p[2] );
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddTextureSample(const FaceType &, const CoordType &, const Point2i &)
|
void AddTextureSample(const FaceType &, const CoordType &, const Point2i &)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue