Я изо всех сил пытаюсь вычислить проекцию многогранника на плоскость xy.В настоящее время я использую следующий код:
vector<Polygon_2> ii;
vector<Polygon_with_holes_2> oi;
for (Facet_iterator s = polyhedron.facets_begin();
s != polyhedron.facets_end(); ++s) {
Halfedge_facet_circulator h = s->facet_begin(), he(h);
Polygon_2 polygon;
do {
Point p1 = h->vertex()->point();
polygon.insert(polygon.vertices_end(), Point_2(p1.x(), p1.y()));
} while (++h != he);
if (polygon.orientation() == CGAL::NEGATIVE)
polygon.reverse_orientation();
ii.push_back(polygon);
}
CGAL::join(ii.begin(), ii.end(), std::back_inserter(oi));
Эта функция выполняет итерацию по многогранным поверхностям, и для каждой поверхности 2-мерная проекция выполняется вручную.Полученные многоугольники затем объединяются.
Однако из руководства я считаю, что это не тот способ использования библиотеки для такой задачи.Класс Project_traits_xy_3
намекает на то, что существует обычный способ достижения проекции с помощью CGAL.Однако я не смог найти подходящей документации или примеров для этого.
Может кто-нибудь указать мне правильное направление здесь?Я чувствую, что это должно быть стандартной задачей с элегантным способом.