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!