使用孔时的剪刀库问题
clipper lib problems when using holes
我正在研究一个 gis 类型的 2d 地图生成器,我正在使用裁剪器库。我在施工过程中注意到一些错误,我认为我做错了什么,所以我运行了这个示例,问题是没有考虑内三角形,它应该是一个洞,它被添加为一个完整的多边形到解决方案中。如果我使用 lib 中的函数反转多边形,三角形将完全消失。从昨天开始,我就遇到了这个问题,我还没有弄清楚我做错了什么。有人对这个库有任何问题吗?这是一个常见的错误'?
<小时 />我使用了这段代码,直接取自您的网站
包括"clipper.hpp">
//from clipper.hpp ...
//typedef signed long long long64;
//struct IntPoint {long64 X; long64 Y;};
//typedef std::vector<IntPoint> Polygon;
//typedef std::vector<Polygon> Polygons;
...
using namespace ClipperLib;
Polygons subj(2), clip(1), solution;
//define outer blue 'subject' polygon
subj[0].push_back(IntPoint(180,200));
subj[0].push_back(IntPoint(260,200));
subj[0].push_back(IntPoint(260,150));
subj[0].push_back(IntPoint(180,150));
//define subject's inner triangular 'hole' (with reverse orientation)
subj[1].push_back(IntPoint(215,160));
subj[1].push_back(IntPoint(230,190));
subj[1].push_back(IntPoint(200,190));
//define orange 'clipping' polygon
clip[0].push_back(IntPoint(190,210));
clip[0].push_back(IntPoint(240,210));
clip[0].push_back(IntPoint(240,130));
clip[0].push_back(IntPoint(190,130));
DrawPolygons(subj, 0x160000FF, 0x600000FF); //blue
DrawPolygons(clip, 0x20FFFF00, 0x30FF0000); //orange
//perform intersection ...
Clipper c;
c.AddPolygons(subj, ptSubject);
c.AddPolygons(clip, ptClip);
c.Execute(ctIntersection, solution, pftNonZero, pftNonZero);
DrawPolygons(solution, 0x3000FF00, 0xFF006600); //solution shaded green
我应该透过三角形雕刻出来的洞看到,对吗?我尝试了一个更简单的场景,里面有一个正方形和一个三角形,我执行了不同的操作,如减法异或和差值,我总是得到 2 个多边形,看起来根本没有执行操作。
Clipper 库已经过广泛的测试,并且拥有相当多的用户,所以我相信问题会出现在您的代码中。另外,我不确定您尝试了哪个示例代码,但所有提供的示例都已经过全面测试(在 C++、C# 和 Delphi 中(。
安格斯 - 快船图书馆的作者
必须使用带有PolyTree
输出参数的Execute()
而不是Paths
参数(旧Polygons
(才能获得完整的轮廓+孔解决方案。
相关文章:
- 为"adjacent"变量赋值时出现问题
- 在Ubuntu 16.04上安装Cilk时出现问题
- 编译包含字符串的代码时遇到问题
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 使用mongocxx驱动程序时包含头文件问题
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 运行程序时出现问题
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- 在java中解决这段代码时面临循环中的问题
- 当调用switch语句中的函数时(即使函数不包含循环),似乎是永不结束的循环的问题
- 编译要在英特尔Hyperscan中使用的.cc文件时出现问题
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- 编写时C++中的输入重定向问题
- 提升反序列化问题:运行时输入流错误 (c++)
- Clang 问题:构造时隐式类型转换
- 使用孔时的剪刀库问题
- XML Lite 解析问题 - 解析时忽略无效数据