c++ boost segmentation-fault polygon boost-polygon

c++ - segmentación-falla con impulso:: polígono



boost segmentation-fault (1)

De la documentación: http://www.boost.org/doc/libs/1_55_0/libs/polygon/doc/index.htm

El tipo de datos de coordenadas es un parámetro de plantilla de todos los tipos de datos y algoritmos proporcionados por la biblioteca, y se espera que sea integral. Los algoritmos implementados en la biblioteca no admiten los tipos de datos de coordenadas flotantes debido a que la robustez de punto flotante implica un conjunto diferente de algoritmos y suposiciones específicas de plataformas sobre representaciones de coma flotante.

Tengo datos poligonales que procesé. Ahora quiero ver qué tan bien mis datos procesados ​​se ajustan a mis datos originales. Para esta tarea, quiero usar los set-operadores de polígono de BOOST. El siguiente código me da un segfault aunque:

#include <iostream> #include <boost/polygon/polygon.hpp> using namespace boost::polygon::operators; using namespace std; typedef boost::polygon::polygon_data<double> BPolygon; typedef boost::polygon::polygon_traits<BPolygon>::point_type BPoint; typedef boost::polygon::polygon_set_data<double> BPolygonSet; typedef std::vector<BPolygon> BPolygonVec; double meassureError(BPolygonVec &polys1, BPolygonVec &polys2) { BPolygonSet set1; BPolygonSet set2; assign(set1, polys1); assign(set2, polys2); return area(set1 ^ set2); } int main(int argc, char *argv[]) { BPolygonVec polys1; BPolygonVec polys2; loadPolysFromFile(polys1); loadPolysFromFile(polys2); cout << meassureError(polys1, polys2) << endl; return 0; }

gdb-output:

Program received signal SIGSEGV, Segmentation fault. 0x08156ce7 in std::list<boost::polygon::point_data<double>, std::allocator<boost::polygon::point_data<double> > >::begin (this=0x0) at /usr/include/c++/4.8.2/bits/stl_list.h:759 759 { return iterator(this->_M_impl._M_node._M_next); }

Mis datos constan de unos 2000 polígonos con aproximadamente 10 vértices cada uno y espero tener suficiente memoria para procesarlos. ¿Qué estoy haciendo mal? ¡Gracias por tu ayuda!