Я пытаюсь применить Delaunay_mesher_2::refine_mesh
к набору пронумерованных вершин (то есть класс вершин Triangulation_vertex_base_with_id_2
).Я ожидаю, что любая созданная в процессе вершина должна иметь id()==0
.Однако оказывается, что это не так.Вместо этого идентификаторы имеют различные положительные / отрицательные значения.
Я пытался использовать Triangulation_vertex_base_with_info_2
, но результат был таким же.
Более или менее мой код работает так:
using K = CGAL::Exact_predicates_inexact_constructions_kernel;
using Vb = CGAL::Triangulation_vertex_base_with_id_2<K>;
using Fb = CGAL::Delaunay_mesh_face_base_2<K>;
using Tds = CGAL::Triangulation_data_structure_2<Vb, Fb>;
using CDT_Tag = CGAL::Exact_intersections_tag;
using CDT = CGAL::Constrained_Delaunay_triangulation_2<K, Tds, CDT_Tag>;
using Criteria = CGAL::Delaunay_mesh_size_criteria_2<CDT>;
CDT cdt;
CGAL::Delaunay_mesher_2<CDT, Criteria> mesher(cdt, Criteria(0.125, 0.5));
... // Add some points and constraints.
static const CDT::Point INFINITE_POINT = { 1e100, 1e100 };
std::vector<CDT::Point> seeds = { INFINITE_POINT };
mesher.set_seeds(seeds.begin(), seeds.end());
mesher.refine_mesh();
for (auto vertices_iter = cdt.finite_vertices_begin();
vertices_iter != cdt.finite_vertices_end();
++vertices_iter) {
// do something with vertices_iter->id().
}