#pragma once #include #include struct half_face_t { uint32_t index{}; int8_t orientation{}; }; using half_face_pair_t = std::pair; // compute neighboring pair of half-faces around an iso-edge // output: // pair : pair (iso-face index, iso-face orientation) ISNP_API void compute_face_order(const iso_edge_t &iso_edge, const stl_vector_mp &tets, const stl_vector_mp &iso_verts, const stl_vector_mp &iso_faces, const stl_vector_mp &cut_results, const stl_vector_mp &cut_result_index, const stl_vector_mp &func_in_tet, const stl_vector_mp &start_index_of_tet, const flat_hash_map_mp> &incident_tets, stl_vector_mp &ordered_face_pairs); // compute neighboring pair of half-faces around an iso-edge in a tetrahedron // pair : pair (iso-face index, iso-face orientation) ISNP_API void pair_faces_in_one_tet(const arrangement_t &tet_cut_result, const stl_vector_mp &iso_faces, const iso_edge_t &iso_edge, stl_vector_mp &ordered_face_pairs); // compute neighboring pair of half-faces around an iso-edge in multiple tetrahedrons // pair : pair (iso-face index, iso-face orientation) ISNP_API void pair_faces_in_tets(const iso_edge_t &iso_edge, const stl_vector_mp &containing_simplex, const stl_vector_mp &containing_tetIds, const stl_vector_mp &tets, const stl_vector_mp &iso_faces, const stl_vector_mp &cut_results, const stl_vector_mp &cut_result_index, const stl_vector_mp &func_in_tet, const stl_vector_mp &start_index_of_tet, stl_vector_mp &ordered_face_pairs);