Wildmeshing Toolkit
Loading...
Searching...
No Matches
SplitNewAttributeTopoInfo.cpp
Go to the documentation of this file.
1
3
5
9
10//
11// void SplitNewAttributeTopoInfo::update_neighboring_simplices(
12// const ReturnVariant& ret_data,
13// PrimitiveType pt,
14// const std::vector<Tuple>& output_simplex) const
15//{
16// // default impl is to do nothing
17//}
18
19std::vector<std::array<Tuple, 2>> SplitNewAttributeTopoInfo::input_ear_simplices(
20 const ReturnVariant& ret_data,
21 const Tuple& input_tuple,
22 PrimitiveType pt) const
23{
24 return input_ear_simplices(std::get<EdgeOperationData>(ret_data), input_tuple, pt);
25}
26
27// the simplices that were created by merging simplices
29 const ReturnVariant& ret_data,
30 const Tuple& output_tuple,
31 PrimitiveType pt) const
32{
33 return output_rib_simplices(std::get<EdgeOperationData>(ret_data), output_tuple, pt);
34}
35std::vector<std::array<Tuple, 2>> SplitNewAttributeTopoInfo::output_split_simplices(
36 const ReturnVariant& ret_data,
37 const Tuple& input_tuple,
38 PrimitiveType pt) const
39{
40 return output_split_simplices(std::get<EdgeOperationData>(ret_data), input_tuple, pt);
41}
42
43// the simplices that were created by merging simplices
45 const ReturnVariant& ret_data,
46 const Tuple& input_tuple,
47 PrimitiveType pt) const
48{
49 return input_split_simplices(std::get<EdgeOperationData>(ret_data), input_tuple, pt);
50}
51
53 const ReturnVariant& ret_data,
54 PrimitiveType pt) const
55{
56 return output_duplicated_free_simplices(std::get<EdgeOperationData>(ret_data), pt);
57}
58
59std::vector<std::array<Tuple, 2>> SplitNewAttributeTopoInfo::output_split_simplices(
60 const EdgeOperationData& ret_data,
61 const Tuple& output_tuple,
62 PrimitiveType pt) const
63{
64 int64_t id = get_primitive_type_id(pt);
65
66 switch (id) {
67 case 0: {
68 return {};
69 }
70 case 1: {
71 return {ret_data.split_output_edges(m_mesh)};
72 }
73 default: return {};
74 }
75}
76
78 const EdgeOperationData& ret_data,
79 const Tuple& input_tuple,
80 PrimitiveType pt) const
81{
82 switch (get_primitive_type_id(pt)) {
83 case 1: {
84 return {input_tuple};
85 }
86 default: return {};
87 }
88}
89
90std::vector<std::array<Tuple, 2>> SplitNewAttributeTopoInfo::input_ear_simplices(
91 const EdgeOperationData& ret_data,
92 const Tuple& input_tuple,
93 PrimitiveType pt) const
94{
95 return m_mesh.parent_scope([&]() -> std::vector<std::array<Tuple, 2>> {
96 switch (get_primitive_type_id(pt)) {
97 case 0: {
98 return {ret_data.input_endpoints(m_mesh)};
99 }
100 default: return {};
101 }
102 });
103}
104
105// the simplices that were created by merging simplices
107 const EdgeOperationData& ret_data,
108 const Tuple& output_tuple,
109 PrimitiveType pt) const
110{
111 switch (get_primitive_type_id(pt)) {
112 case 0: {
113 return {output_tuple};
114 }
115 default: return {};
116 }
117}
118
120 const EdgeOperationData& ret_data,
121 PrimitiveType pt) const
122{
123 assert(m_mesh.is_free());
124 switch (get_primitive_type_id(pt)) {
125 case 0: {
126 return {ret_data.m_free_split_v};
127 }
128 case 1: {
129 return {};
130 }
131 default: return {};
132 }
133}
134
135} // namespace wmtk::operations::edge_mesh
bool is_free() const
Definition Mesh.hpp:973
decltype(auto) parent_scope(Functor &&f, Args &&... args) const
Evaluate the passed in function inside the parent scope.
Definition Mesh.hpp:941
The Tuple is the basic navigation tool in our mesh data structure.
Definition Tuple.hpp:19
std::array< Tuple, 2 > input_endpoints(const EdgeMesh &m) const
std::array< Tuple, 2 > split_output_edges(const EdgeMesh &) const
std::vector< std::array< int64_t, 2 > > output_duplicated_free_simplices(const ReturnVariant &ret_data, PrimitiveType pt) const final override
std::vector< std::array< Tuple, 2 > > input_ear_simplices(const ReturnVariant &ret_data, const Tuple &input_tuple, PrimitiveType pt) const final override
std::vector< Tuple > input_split_simplices(const ReturnVariant &ret_data, const Tuple &input_tuple, PrimitiveType pt) const final override
std::vector< Tuple > output_rib_simplices(const ReturnVariant &ret_data, const Tuple &output_tuple, PrimitiveType pt) const final override
std::vector< std::array< Tuple, 2 > > output_split_simplices(const ReturnVariant &ret_data, const Tuple &output_tuple, PrimitiveType pt) const final override
constexpr int8_t get_primitive_type_id(PrimitiveType t)
Get a unique integer id corresponding to each primitive type.