Program Listing for File RegularTriangleSampling.h

Return to documentation for file (SPlisHSPlasH/Utilities/RegularTriangleSampling.h)

#ifndef __RegularTriangleSampling_H__
#define __RegularTriangleSampling_H__

#include "../Common.h"

#include <vector>

namespace SPH
{
    class RegularTriangleSampling
    {
    public:
        RegularTriangleSampling();

        static void sampleMesh(const unsigned int numVertices, const Vector3r *vertices, const unsigned int numFaces, const unsigned int *faces,
            const Real maxDistance, std::vector<Vector3r> &samples);

    private:
        using Vector2ui = Eigen::Matrix<unsigned int, 2, 1, Eigen::DontAlign>;

        static void appendVertexSamples(const unsigned int numVertices, const Vector3r * vertices, std::vector<Vector3r> &samples);
        static void appendEdgeSamples(const Real d, const Vector3r * vertices, const std::vector<Vector2ui> & edges, std::vector<Vector3r> &samples, bool skipVertices = true);
        static void appendFaceSamples(const Real d, const Vector3r * vertices, const unsigned int numFaces, const unsigned int * faces, std::vector<Vector3r> &samples, bool skipEdges = true);

        static std::vector<Vector2ui> uniqueEdges(unsigned int numFaces, const unsigned int *faces);


    };
}

#endif // __RegularTriangleSampling_H__