Browse Source

fix: update filter_active_vertices function signature and logic for vertex processing

test-three-planes-intersection
mckay 4 weeks ago
parent
commit
5ba0349fb6
  1. 4
      network_process/include/post_topo/filter_polygon_faces.hpp
  2. 10
      network_process/src/post_topo/filter_polygon_faces.cpp

4
network_process/include/post_topo/filter_polygon_faces.hpp

@ -13,4 +13,6 @@ dynamic_bitset_mp<> filter_polygon_faces(const stl_vector_mp<polygon_face_t>&
stl_vector_mp<uint32_t>& output_polygon_faces, stl_vector_mp<uint32_t>& output_polygon_faces,
stl_vector_mp<uint32_t>& output_vertex_counts_of_face); stl_vector_mp<uint32_t>& output_vertex_counts_of_face);
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>& vertices,
stl_vector_mp<uint32_t>& output_polygon_faces);

10
network_process/src/post_topo/filter_polygon_faces.cpp

@ -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);
} }
Loading…
Cancel
Save