Demonstrates flattening of a triangular pyramid mesh using ABF++ and LSCM.
#include <iostream>
#include "OpenABF/OpenABF.hpp"
int main()
{
const std::vector vertices = {Vec3f{0.f, 0.f, 0.f}, Vec3f{2.f, 0.f, 0.f},
Vec3f{1.f, std::sqrt(3.f), 0.f},
Vec3f{1.f, std::sqrt(3.f) / 3.f, std::sqrt(6.f) * 2.f / 3.f}};
auto mesh = ABF::Mesh::New();
mesh->insert_vertices(vertices);
mesh->insert_faces({{1, 3, 0}, {3, 2, 0}, {3, 1, 2}});
std::size_t iters{0};
std::cout << "ABF++ Final gradient: " << grad << std::endl;
std::cout << "ABF++ Iterations: " << iters << std::endl;
for (const auto& v : mesh->vertices()) {
std::cout << v->idx << ": " << vertices[v->idx] << " -> " << v->pos << std::endl;
}
WriteMesh("openabf_example_basic_flattening.obj", mesh);
}
Compute parameterized interior angles using ABF++.
Definition OpenABF.hpp:2640
static void Compute(typename Mesh::Pointer &mesh, std::size_t &iters, T &gradient, const std::size_t maxIters=10, T gradThreshold=T(0.001))
Compute parameterized interior angles.
Definition OpenABF.hpp:2678
Compute parameterized mesh using Angle-based LSCM.
Definition OpenABF.hpp:2987
static void Compute(typename Mesh::Pointer &mesh)
Compute the parameterized mesh using automatic pin selection.
Definition OpenABF.hpp:3018
Vec< float, 3 > Vec3f
3D, 32-bit float vector
Definition OpenABF.hpp:419
constexpr T INF
Inf, templated for floating-point type.
Definition OpenABF.hpp:69