我最近发现 boost 多边形只是整数:Boost Polygon 的用途是什么?
我正在通过将我的浮点值乘以一个大指数然后重新规范化库的输出来解决这个问题,但默认情况下,内部表示似乎是 32 位,并且当我的输入超过最大 int 时不起作用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 结构并使用它,但不确定具体如何。