ошибка сегментации с бустом :: полигон

У меня есть данные полигона, которые я обработал. Теперь я хочу увидеть, насколько хорошо мои обработанные данные соответствуют моим исходным данным. Для этой задачи я хочу использовать многоугольные операторы BOOST.
Следующий код дает мне segfault, хотя:

#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-вывода:

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); }

Мои данные состоят из примерно 2000 полигонов с примерно 10 вершинами в каждом, и я ожидаю, что у меня будет достаточно памяти для обработки этого. Что я делаю неправильно? Спасибо за вашу помощь!

3

Решение

Из документации: http://www.boost.org/doc/libs/1_55_0/libs/polygon/doc/index.htm

Тип данных координат является параметром шаблона всех типов данных и
алгоритмы, предоставляемые библиотекой, и, как ожидается, будут интегральными.
Типы данных координат с плавающей точкой не поддерживаются
алгоритмы, реализованные в библиотеке в связи с тем, что
достижение устойчивости с плавающей запятой подразумевает другой набор
алгоритмы и, как правило, специфичные для платформы предположения о плавающих
точечные представления.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]