Wildmeshing Toolkit
Loading...
Searching...
No Matches
ManExtractTriMesh.h
1#pragma once
2
3#include <wmtk/components/topological_offset/Parameters.h>
4#include <wmtk/components/topological_offset/TopoOffsetTriMesh.h>
5#include "Parameters.h"
6
7using namespace wmtk::components;
8
9
10namespace wmtk::components::manifold_extraction {
11
12
14{
15public:
16 int m_vtu_counter = 0;
17 int m_surfvtu_counter = 0;
18
19 Parameters& m_man_params;
20
22 Parameters& _m_man_params,
23 topological_offset::Parameters& _m_top_params,
24 int _num_threads = 0)
25 : topological_offset::TopoOffsetTriMesh(_m_top_params, _num_threads)
26 , m_man_params(_m_man_params)
27 {}
28
30
31public:
36 size_t label_non_manifold(); // return # of non manifold edges, verts
37
44 bool vertex_is_manifold(const Tuple& v) const;
45
49 void vertex_dfs_helper(std::set<size_t>& visited_fids, const Tuple& f) const;
50
55 void extract_curve_mesh(MatrixXd& V, MatrixXi& F) const;
56
60 void write_curve(const std::string& path);
61
62private: // helpers
63 bool is_curve_vertex(const Tuple& v) const;
64 bool is_curve_edge(const Tuple& e) const;
65 bool is_interior_face(const Tuple& f) const;
66 bool is_interior_face(size_t f_id) const;
67};
68
69} // namespace wmtk::components::manifold_extraction
Definition TriMesh.h:32
bool vertex_is_manifold(const Tuple &v) const
check if a vertex is manifold. A vertex is manifold if all 'inside' and all 'outside' tets adjacent t...
Definition ManExtractTriMesh.cpp:70
size_t label_non_manifold()
label nonmanifold simplices (edges and verts). Corresponding attributes have label set to 1
Definition ManExtractTriMesh.cpp:54
void vertex_dfs_helper(std::set< size_t > &visited_fids, const Tuple &f) const
dfs helper for vertex manifold check
Definition ManExtractTriMesh.cpp:103
void extract_curve_mesh(MatrixXd &V, MatrixXi &F) const
extract edge mesh separating 'inside' faces from 'outside' faces. Resulting curve is guaranteed to be...
Definition ManExtractTriMesh.cpp:124
void write_curve(const std::string &path)
write curve .obj (boundary of in_tag)
Definition ManExtractTriMesh.cpp:153