Здравствуйте.
Пишу программу с использованием библиотеки cgal.
Нужно модифицировать и объединять многогранники.
Изменяю только координаты вершин, иногда появляются совпадающие, что не дает конвертировать в nef многогранник.
У класса Polyhedron_3 есть несколько методов для модификации, попробовал написать, рабочего кода не вышло, join_vertex работать отказывается, тк соседних вершин мало.
// ищу совпадающие вершины
Point_3 p1,p2;
for ( Halfedge_iterator h=poly.halfedges_begin();h!=poly.halfedges_end();++h )
{
p1 = h->vertex()->point();
p2 = h->next()->vertex()->point();
r = dist_point( p1,p2 );
if ( r==0 )
{
Halfedge_handle h1 = h->next();
Halfedge_handle h2 = h->opposite()->prev();
poly.join_facet(h);
poly.join_facet(h1);
poly.join_facet(h2);
}
}
при попытке преобразовать в Nef_polyhedron падает с ошибкой:
terminate called after throwing an instance of 'CGAL::Assertion_exception'
what(): CGAL ERROR: assertion violation!
Expr: pe_prev->is_border() || pe_prev->facet()->plane().has_on(pv.point())
File: /usr/include/CGAL/Nef_3/polyhedron_3_to_nef_3.h
Собственно может кто делал такое?