используя Boost Polygon с высокоточными целыми числами

Недавно я обнаружил, что полигон надстройки только для целых чисел: В чем полезность Boost Polygon?

Я работаю над этим путем умножения моих значений с плавающей запятой на большую экспоненту, а затем перенормировки вывода из библиотеки, но по умолчанию внутреннее представление кажется 32-битным и не работает, когда мой ввод превышает max int в 2 миллиарда или около того.

Есть ли способ заставить библиотеку работать с 64-битными целыми числами?

например: http://www.boost.org/doc/libs/1_62_0/libs/polygon/doc/tutorial/minkowski.cpp

с моими наивными модификациями:

typedef boost::polygon::point_data<long long int> point;
typedef boost::polygon::polygon_set_data<long long int> polygon_set;
typedef boost::polygon::polygon_with_holes_data<long long int> polygon;

...

int main(int argc, char **argv) {
polygon_set a, b, c;
a += boost::polygon::rectangle_data<long long int>(0, 0, 10000000000, 10000000000);
std::vector<polygon> polys;

b += boost::polygon::rectangle_data<long long int>(0, 0, 10000000000, 10000000000);

polys.clear();
convolve_two_polygon_sets(c, a, b);
c.get(polys);

for(int i = 0; i < polys.size(); ++i ){
std::cout << polys[i] << std::endl;
}

return 0;
}

это выдает многоугольник, но только для прямоугольников, меньших, чем max int. Входные данные длинные, но я предполагаю, что они все еще 32-битные. Я понимаю, что должен определить новую структуру Point и использовать ее, но не уверен, насколько конкретно.

0

Решение

Задача ещё не решена.

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector