WIP: cells markers

This commit is contained in:
Laurent Rineau 2024-02-09 15:11:19 +01:00
parent 9bfbf53fbb
commit b51f3af912
1 changed files with 13 additions and 0 deletions

View File

@ -96,6 +96,13 @@ public:
} }
}; };
enum class CDT_3_cell_marker {
CLEAR = 0,
IN_REGION = 1,
ON_REGION_BOUNDARY = 2,
nb_of_markers
};
template <typename Gt, typename Cb = Triangulation_cell_base_3<Gt> > template <typename Gt, typename Cb = Triangulation_cell_base_3<Gt> >
class Constrained_Delaunay_triangulation_cell_base_3 class Constrained_Delaunay_triangulation_cell_base_3
: public Base_with_time_stamp<Cb> : public Base_with_time_stamp<Cb>
@ -103,6 +110,7 @@ class Constrained_Delaunay_triangulation_cell_base_3
using Base = Base_with_time_stamp<Cb>; using Base = Base_with_time_stamp<Cb>;
std::array<CDT_3_face_index, 4> face_id = { -1, -1, -1, -1 }; std::array<CDT_3_face_index, 4> face_id = { -1, -1, -1, -1 };
std::array<void*, 4> facet_2d = {nullptr, nullptr, nullptr, nullptr}; std::array<void*, 4> facet_2d = {nullptr, nullptr, nullptr, nullptr};
std::bitset<static_cast<unsigned>(CDT_3_cell_marker::nb_of_markers)> markers;
public: public:
// To get correct cell type in TDS // To get correct cell type in TDS
@ -115,6 +123,11 @@ public:
// Constructor // Constructor
using Base::Base; using Base::Base;
bool is_marked(CDT_3_cell_marker m) const { return markers.test(static_cast<unsigned>(m)); }
void set_mark(CDT_3_cell_marker m) { markers.set(static_cast<unsigned>(m)); }
void clear_mark(CDT_3_cell_marker m) { markers.reset(static_cast<unsigned>(m)); }
void clear_marks() { markers.reset(); }
bool is_facet_constrained(int i) const { return face_id[unsigned(i)] >= 0; } bool is_facet_constrained(int i) const { return face_id[unsigned(i)] >= 0; }
template <typename Facet_handle> template <typename Facet_handle>