3#include <DGtal/helpers/StdDefs.h>
4#include <DGtal/topology/CanonicCellEmbedder.h>
5#include <DGtal/topology/CanonicSCellEmbedder.h>
6#include <DGtal/math/linalg/EigenSupport.h>
7#include <DGtal/dec/DiscreteExteriorCalculus.h>
10bool ends_with(
const std::string& value,
const std::string& ending);
12typedef DGtal::DiscreteExteriorCalculus<2, 3, DGtal::EigenLinearAlgebraBackend> Calculus;
13typedef Calculus::LinearAlgebraBackend Backend;
14typedef Calculus::KSpace KSpace;
15typedef DGtal::CanonicCellEmbedder<KSpace> CellEmbedder;
16typedef DGtal::CanonicSCellEmbedder<KSpace> SCellEmbedder;
17typedef KSpace::SCell SCell;
18typedef KSpace::Cell Cell;
19typedef Backend::DenseVector FlatVector;
20typedef Backend::SparseMatrix OperatorMatrix;
21typedef Backend::Triplet Triplet;
22typedef DGtal::Z3i::Point Point;
23typedef DGtal::Z3i::RealPoint RealPoint;
25std::tuple<Calculus, FlatVector>
26initCalculusAndNormalsFromSurfelNormalsCSV(
const std::string& filename);
29checkOperatorSymmetry(
const OperatorMatrix& matrix,
const double tol=1e-8);
32vertexNormals(
const Calculus& calculus,
const FlatVector& face_normals);
44exportOBJ(
const Calculus& calculus,
const FlatVector& positions,
const std::string& filename);
47std::tuple<FlatVector, FlatVector, FlatVector, FlatVector>
48approximateSurface(
const Calculus& calculus,
const FlatVector& normals,
const ApproxParams& params);
51std::tuple<double, double>
52approximateSurfaceEnergies(
const Calculus& calculus,
const FlatVector& normals,
const FlatVector& positions);
double regularization_position
double regularization_center