Wildmeshing Toolkit
Loading...
Searching...
No Matches
ManifoldUtils.hpp
1#pragma once
2
3
4#include <igl/predicates/predicates.h>
5#include <Eigen/Core>
6#include <Eigen/Dense>
7
8#include <array>
9
10namespace wmtk {
11
12// convert triangle soup to manifold components for TriMesh.
13bool separate_to_manifold(
14 const std::vector<Eigen::Vector3d>& vertices,
15 const std::vector<std::array<size_t, 3>>& faces,
16 std::vector<Eigen::Vector3d>& out_v,
17 std::vector<std::array<size_t, 3>>& out_f,
18 std::vector<size_t>& modified_vertices);
19
20namespace manifold_internal {
21
22using Vertices = Eigen::Matrix<double, Eigen::Dynamic, 3, Eigen::RowMajor>;
23using Facets = Eigen::Matrix<uint64_t, Eigen::Dynamic, 3, Eigen::RowMajor>;
24
25void resolve_nonmanifoldness(
26 Vertices& V,
27 Facets& F,
28 std::vector<size_t>& modified_vertices);
29
30} // namespace manifold_internal
31
32} // namespace wmtk