|
|
|
@ -1,5 +1,6 @@ |
|
|
|
#include <post_topo.hpp> |
|
|
|
#include "container/wrapper/relation_graph.hpp" |
|
|
|
#include "fwd_types.hpp" |
|
|
|
|
|
|
|
void filter_chains(const stl_vector_mp<polygon_face_t>& faces, |
|
|
|
const stl_vector_mp<stl_vector_mp<uint32_t>>& patches, |
|
|
|
@ -24,11 +25,17 @@ void filter_chains(const stl_vector_mp<polygon_face_t>& faces, |
|
|
|
return tri.chain_index == triangle.chain_index; |
|
|
|
}); |
|
|
|
if (iter == chain_triangles.end()) { |
|
|
|
auto& mapped_tri = chain_triangles.emplace_back(); |
|
|
|
mapped_tri.chain_index = tri.chain_index; |
|
|
|
mapped_tri.v1 = vertex_old_index_to_unique_index.at(tri.v1); |
|
|
|
mapped_tri.v2 = vertex_old_index_to_unique_index.at(tri.v2); |
|
|
|
mapped_tri.v3 = vertex_old_index_to_unique_index.at(tri.v3); |
|
|
|
auto v1_iter = vertex_old_index_to_unique_index.find(tri.v1); |
|
|
|
auto v2_iter = vertex_old_index_to_unique_index.find(tri.v2); |
|
|
|
auto v3_iter = vertex_old_index_to_unique_index.find(tri.v3); |
|
|
|
if (v1_iter != vertex_old_index_to_unique_index.end() && v2_iter != vertex_old_index_to_unique_index.end() |
|
|
|
&& v3_iter != vertex_old_index_to_unique_index.end()) { |
|
|
|
chain_triangle_t mapped_tri{}; |
|
|
|
mapped_tri.v1 = v1_iter->second; |
|
|
|
mapped_tri.v2 = v2_iter->second; |
|
|
|
mapped_tri.v3 = v3_iter->second; |
|
|
|
chain_triangles.emplace_back(mapped_tri); |
|
|
|
} |
|
|
|
} else { |
|
|
|
// mark chain on this subface has double sides by all invalid vertex index
|
|
|
|
iter->v1 = invalid_index; |
|
|
|
|