[CGAL] Удаление совпадающих вершин из многогранника
От: pulo  
Дата: 11.04.11 06:12
Оценка:
Здравствуйте.
Пишу программу с использованием библиотеки 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

Собственно может кто делал такое?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.