#pragma once #include #include #include "execution.h" /// Propagate the function labels of patches to cells. class PatchPropagator { public: solve_result_t execute(const virtual_node_t& tree_root, const stl_vector_mp& leaf_index_of_primitive, const stl_vector_mp& vertices, const stl_vector_mp& faces, const stl_vector_mp>& patches, const stl_vector_mp& patch_areas, const stl_vector_mp& volume_parts_of_patches, const stl_vector_mp>& arrangement_cells, const stl_vector_mp& shell_of_half_patch, const stl_vector_mp>& shells, stl_vector_mp& output_polygon_faces, stl_vector_mp& output_vertex_counts_of_face); private: void propagate_labels(const stl_vector_mp& vertices, const stl_vector_mp& faces, const stl_vector_mp>& patches, const stl_vector_mp>& arrangement_cells, const stl_vector_mp& shell_of_half_patch, const stl_vector_mp>& shells, const stl_vector_mp& shell_to_cell, stl_vector_mp>& function_cell_labels); dynamic_bitset_mp<> filter_cells_by_boolean(const virtual_node_t& tree_root, const stl_vector_mp& leaf_index_of_primitive, const stl_vector_mp>& function_cell_labels); };