Я параметризую простое меня sh (см. Рисунок ниже) с помощью seam_Polyhedron_3. cpp примера CGAL 4.14.
![simple example mesh](https://i.stack.imgur.com/87IaN.png)
Я определил вершины, чтобы «разрезать его», которые я записал в файл шва (они l ie вдоль одной полилинии, соединяющей нижнюю и верхнюю границы):
73 75 80 120
Однако меня смущает то, что возвращает строка
halfedge_descriptor bhd = CGAL::Polygon_mesh_processing::longest_border(mesh).first;
: кажется, что она проходит только через нижнюю границу. Это я мог проверить, посчитав количество вершин на границе,
typedef typename boost::graph_traits<Mesh>::vertex_descriptor Mesh_vertex_descriptor;
Mesh_vertex_descriptor beg = source(bhd, mesh);
int i=0;
do
{
i++;
bhd = next(bhd, mesh);
}
while(source(bhd, mesh) != beg);
std::cout << "There were " << i << " vertices on the boundary." << std::endl;
, которое вернуло 34 (что, в свою очередь, является количеством вершин на нижней границе).
Вопрос: Как я могу изменить конструкцию bhd
так, чтобы она охватывала всю (виртуальную) границу? Т.е. показанная мною итерация должна проходить через нижнюю границу, шов вверх, верхнюю границу и шов вниз и возвращать 32 + 3 + 32 + 3 = 70?
Пока я пытался найти альтернативу longest_boundary и посмотреть, есть ли возможность изменить поведение с помощью именованных параметров . Я также попытался добавить вершины на нижней и верхней границах к me sh, но это ничего не меняет, как указано в документации Seam_me sh. Изменение порядка вершин шва также не привело к видимым изменениям.
Заранее спасибо!