File UniformAreaSampler.h
File List > algos > mesh_to_pointcloud > UniformAreaSampler.h
Go to the documentation of this file
#pragma once
#include "ISurfaceSampler.h"
#include "mesh/Mesh.h"
#include "point_cloud/PointCloud.h"
namespace Argos {
class UniformAreaSampler : public ISurfaceSampler
{
private:
std::size_t m_pointCount;
public:
explicit UniformAreaSampler(std::size_t pointCount): m_pointCount(pointCount) {}
PointCloud sample(const Mesh& mesh) override;
std::string name() const override {
return "(UniformAreaSampler-pc" + std::to_string(m_pointCount) + ")";
}
double computeMeshSurfaceArea(const Mesh& mesh) const;
std::vector<std::size_t> distributePointsOverFaces(
const Mesh& mesh,
double totalArea
) const;
void sampleTriangleSurface(
const Vector3D<double>& A,
const Vector3D<double>& B,
const Vector3D<double>& C,
std::size_t pointCount,
PointCloud& cloud
) const;
void sampleFaceSurface(
const Mesh& mesh,
const Face& face,
std::size_t pointCount,
PointCloud& cloud
) const;
};
} // namespace Argos