#pragma once #include #include #include #include "settings.h" // struct parametric_chain_t { // std::vector vertices{}; // // the other subface index (except the subface of the parametric plane) of the chain // uint32_t other_subface_index{}; // // neighboring patch group (at most 2) indices of the chain // std::array group_patch_indices{}; // }; // struct parametric_plane_t { // std::vector chains{}; // // vertices at the start of the cycle (i.e. always align at U = 0 by now) // std::vector vertices_at_cycle_start{}; // // verices at the end of the cycle (e.g. for cycle = 2\pi, these points align at U = 2\pi) // std::vector vertices_at_cycle_end{}; // }; // struct parametric_plane_t { // // /// plane associated properties // // Eigen::AlignedBox2d uv_bounds{}; // /// chain associated properties // std::vector> chain_vertices{}; // // // iff start/end vertex, then this is signular or not; else this is polar or not // // std::vector> vertex_special_flags{}; // // // format: total length is N - 1, and i identifies whether edge [i, i+1) is near parallel or not // // std::vector> edge_near_parallel_flags{}; // // the other subface index (except the subface of the parametric plane) of the chain // std::vector chain_other_subface_indices{}; // // neighboring patch group (at most 2) indices of the chain // std::vector> chain_group_indices{}; // // /// chain group (by neighboring patch) associated properties // // std::vector> chain_group_indices{}; // }; ISNP_API void build_implicit_network_by_blobtree(const s_settings& settings, const baked_blobtree_t& tree, std::vector& output_vertices, std::vector& output_polygon_faces, std::vector& output_vertex_counts_of_face, icurve_relation_graph_t& output_icurve_relation_graph);