问题标签 [boost-polygon]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用 Boost Polygon 的减法结果不正确
我有以下两个输入多边形,我想为其计算减去的多边形:
A:
乙:
因此,我想计算A - B
,这应该会产生一个带有方形切口的三角形。使用 Boost Polygon 进行计算会导致不正确的带有切口的部分三角形。很难画;结果三角形的缺失部分由三角形表示(3, 0) => (0, 8) => (1, 2)
。我正在使用以下代码来计算减法:
这将打印构成切口三角形的以下后续点:
因此,结果中缺少边缘(1, 2) => (3, 0)
和。(3, 0) => (0, 8)
结果中缺少输入三角形的右上部分。
正确的输出可能如下所示:
这是 Boost Polygon 中的一个错误,我是否以某种方式错误地使用了该库,还是我还缺少其他东西?
一些附加信息:
- 我正在使用 GCC 7.2.0,Boost 1.60.0。Boost Polygon 此后一直没有更新,因此升级 Boost 很可能无济于事。
double
使用而不是参数化点类型和所有其他几何类型int
不能解决问题。- 例如,使用轴对齐的矩形计算切口没有问题。
- 对于我的应用程序,我想使用 Boost Polygon 而不是 Boost Geometry,因为它提供了多边形锁孔压裂支持。
c++ - 如何将 boost::polygon 中的多边形集数据转换为多边形数据?
首先,我的意思是 boost::polygon 库,而不是 boost::geometry 库。我的代码是:
我想使用 poly1 和 poly2 的并集,它将是一个有 8 个点的多边形。现在我必须将结果 polyset 转换为 Polygon 类型,但我没有找到这样做的方法。谁能告诉我我该怎么做?
c++ - boost::polygon_90_data 不能处理面积值为 0 的多边形?
我的多边形有整数坐标,可能像一条线,我发现 boost::polygon_90_data 可以处理其中一些,但这个不能:
在2,3条件下,gtl::contains返回false,即使通过Point(200, 400)是我自己指定的坐标。所以为什么?使用 gtl::polygon_90_data 是否有一些限制?
c++ - 编译 Boost segment_utils.hpp 时出错
我想使用 Boost 段实用程序的 intersect_segments 方法,可以在这里找到:http: //www.boost.org/doc/libs/1_59_0/libs/polygon/doc/gtl_segment_concept.htm
我还遵循并实现了将 Point 和 Segment 结构映射到 Boost.Polygon 概念的代码:http: //www.boost.org/doc/libs/1_59_0/libs/polygon/doc/voronoi_basic_tutorial.htm
但是,当我包含时,<boost/polygon/segment_utils.hpp>
我会在编译过程中遇到很多错误:
这是否意味着我也需要实现 Unit 概念?如果是这样,那是怎么做的?
编辑:我的代码与此代码相同:http: //www.boost.org/doc/libs/1_61_0/libs/polygon/example/voronoi_basic_tutorial.cpp但随后#include <boost/polygon/segment_utils.hpp>
添加了。
c++ - 来自 Voronoi 的 Delaunay with boost:缺少具有非积分点坐标的三角形
在这两个资源之后:
我用boost
. 如果点坐标是积分的,它工作正常(我生成了几个随机测试,我没有观察到错误)。但是,如果这些点不是积分的,我会发现许多不正确的三角剖分缺少边缘或错误的边缘。
例如,这个图像是用四舍五入的值构建的并且是正确的(见下面的代码)
但是这个图像是用原始值构建的并且是不正确的(见下面的代码)
此代码重现了这两个示例(没有显示)。
c++11 - polygon_90_data 和顶点的问题
我创建了一个具有 5 个顶点的增强多边形,但是当我显示顶点或
它与创建的多边形不对应的区域。面积应该是 110 但显示为 100?顶点应该是 (0,0), (0,10), (5,12), (10,10), (10,0) 但是是 (0/10), (5/10) ,(5/ 10)、(10/10)、(10/0)、(0/0)。看起来点 (/5/12) 已被取消并替换为点 (5/10)。我究竟做错了什么?谢谢。
c++ - 使用 boost::polygon::voronoi 对点集进行三角剖分会导致三角形重叠
我正在使用boost::polygon::voronoi
下面的代码(在这个问题下找到)对一组 2d 点进行三角测量
但是,我的一些三角形重叠,如下图所示:
请注意,重叠的三角形与其他三角形相比总是具有反向剔除,即它们指向下方。
如何修改算法以使生成的网格不包含这些重叠图像?我对 voronoi 图不够流利,无法手动解决这个问题。
c++ - 用 boost::geometry 扩展多边形?
我知道可以通过 boost::geometry 相互添加/减去不同的多边形,示例可以在 web.xml 的不同位置找到。现在我想做的是不同的事情:
我有一个 2D 多边形,我想将其扩展/缩小给定大小。所以我说的不是简单的缩放操作,而是一个函数,它从输入数据中计算出一个新的多边形:
在扩展功能的情况下,必须在输入多边形的角处添加新的坐标点,例如在该位置产生圆角或平角
如果输入多边形的收缩函数向量太小而无法“生存”收缩操作,则必须完全删除它们
我的问题:使用 boost::geometry 可以进行这样的操作吗?如果是,如何做到这一点?
谢谢!
c++ - 使用 boost::polygon 添加多边形不编译?
可能这是一个愚蠢的问题,只是一个简单的问题,但我无法编译相对简单的代码。我尝试做的是使用 boost::polygon (一些显示相关部分的伪代码)添加/连接两个多边形:
最后一行是我偶然发现的地方:编译器说操作符“+”对于 polygon_with_holes_data 是未知的:
当我使用 polygon_data 而不是 polygon_with_holes_data 时,会出现相同的错误。知道我做错了什么吗?
谢谢!