|
@ -82,10 +82,12 @@ dynamic_bitset_mp<> filter_polygon_faces(const stl_vector_mp<polygon_face_t>& |
|
|
return active_face_label; |
|
|
return active_face_label; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void filter_active_vertices(stl_vector_mp<Eigen::Vector3d>& vertices, stl_vector_mp<uint32_t>& output_polygon_faces) |
|
|
void filter_active_vertices(stl_vector_mp<Eigen::Vector3d>& iso_pts, |
|
|
|
|
|
stl_vector_mp<Eigen::Vector3d>& output_vertices, |
|
|
|
|
|
stl_vector_mp<uint32_t>& output_polygon_faces) |
|
|
{ |
|
|
{ |
|
|
stl_vector_mp<uint32_t> unique_vertex_indices{}; |
|
|
stl_vector_mp<uint32_t> unique_vertex_indices{}; |
|
|
dynamic_bitset_mp<> vertex_visited(vertices.size(), false); |
|
|
dynamic_bitset_mp<> vertex_visited(iso_pts.size(), false); |
|
|
for (const auto& vertex_index : output_polygon_faces) { |
|
|
for (const auto& vertex_index : output_polygon_faces) { |
|
|
if (!vertex_visited[vertex_index]) { |
|
|
if (!vertex_visited[vertex_index]) { |
|
|
unique_vertex_indices.emplace_back(vertex_index); |
|
|
unique_vertex_indices.emplace_back(vertex_index); |
|
@ -102,6 +104,6 @@ void filter_active_vertices(stl_vector_mp<Eigen::Vector3d>& vertices, stl_vector |
|
|
|
|
|
|
|
|
stl_vector_mp<Eigen::Vector3d> unique_vertices{}; |
|
|
stl_vector_mp<Eigen::Vector3d> unique_vertices{}; |
|
|
unique_vertices.reserve(unique_vertex_indices.size()); |
|
|
unique_vertices.reserve(unique_vertex_indices.size()); |
|
|
for (const auto& vertex_index : unique_vertex_indices) { unique_vertices.emplace_back(vertices[vertex_index]); } |
|
|
for (const auto& vertex_index : unique_vertex_indices) { unique_vertices.emplace_back(iso_pts[vertex_index]); } |
|
|
std::swap(vertices, unique_vertices); |
|
|
std::swap(output_vertices, unique_vertices); |
|
|
} |
|
|
} |