我最近发现提升多边形仅为整数:What is the utility of Boost Polygon?
我通过将浮点值乘以一个大指数然后重新归一化来自库的输出来解决这个问题,但默认情况下,内部表示似乎是32位,当我的时候不起作用输入超过20亿左右的最大值。
有没有办法让库使用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结构并使用它但不确定具体如何。