问题标签 [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.

0 投票
1 回答
363 浏览

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,因为它提供了多边形锁孔压裂支持。
0 投票
1 回答
874 浏览

c++ - 如何将 boost::polygon 中的多边形集数据转换为多边形数据?

首先,我的意思是 boost::polygon 库,而不是 boost::geometry 库。我的代码是:

我想使用 poly1 和 poly2 的并集,它将是一个有 8 个点的多边形。现在我必须将结果 polyset 转换为 Polygon 类型,但我没有找到这样做的方法。谁能告诉我我该怎么做?

0 投票
1 回答
88 浏览

c++ - boost::polygon_90_data 不能处理面积值为 0 的多边形?

我的多边形有整数坐标,可能像一条线,我发现 boost::polygon_90_data 可以处理其中一些,但这个不能:

在2,3条件下,gtl::contains返回false,即使通过Point(200, 400)是我自己指定的坐标。所以为什么?使用 gtl::polygon_90_data 是否有一些限制?

0 投票
2 回答
227 浏览

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>添加了。

0 投票
3 回答
1598 浏览

c++ - 来自 Voronoi 的 Delaunay with boost:缺少具有非积分点坐标的三角形

在这两个资源之后:

我用boost. 如果点坐标是积分的,它工作正常(我生成了几个随机测试,我没有观察到错误)。但是,如果这些点不是积分的,我会发现许多不正确的三角剖分缺少边缘或错误的边缘。

例如,这个图像是用四舍五入的值构建的并且是正确的(见下面的代码)

在此处输入图像描述

但是这个图像是用原始值构建的并且是不正确的(见下面的代码)

在此处输入图像描述

此代码重现了这两个示例(没有显示)。

0 投票
0 回答
60 浏览

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)。我究竟做错了什么?谢谢。

0 投票
0 回答
85 浏览

c++ - 使用 boost::polygon::voronoi 对点集进行三角剖分会导致三角形重叠

我正在使用boost::polygon::voronoi下面的代码(在这个问题下找到)对一组 2d 点进行三角测量

但是,我的一些三角形重叠,如下图所示:

生成的三角形的图像 请注意,重叠的三角形与其他三角形相比总是具有反向剔除,即它们指向下方。

如何修改算法以使生成的网格不包含这些重叠图像?我对 voronoi 图不够流利,无法手动解决这个问题。

0 投票
1 回答
818 浏览

c++ - 用 boost::geometry 扩展多边形?

我知道可以通过 boost::geometry 相互添加/减去不同的多边形,示例可以在 web.xml 的不同位置找到。现在我想做的是不同的事情:

我有一个 2D 多边形,我想将其扩展/缩小给定大小。所以我说的不是简单的缩放操作,而是一个函数,它从输入数据中计算出一个新的多边形:

  • 在扩展功能的情况下,必须在输入多边形的角处添加新的坐标点,例如在该位置产生圆角或平角

  • 如果输入多边形的收缩函数向量太小而无法“生存”收缩操作,则必须完全删除它们

我的问题:使用 boost::geometry 可以进行这样的操作吗?如果是,如何做到这一点?

谢谢!

0 投票
1 回答
99 浏览

c++ - 使用 boost::polygon 添加多边形不编译?

可能这是一个愚蠢的问题,只是一个简单的问题,但我无法编译相对简单的代码。我尝试做的是使用 boost::polygon (一些显示相关部分的伪代码)添加/连接两个多边形:

最后一行是我偶然发现的地方:编译器说操作符“+”对于 polygon_with_holes_data 是未知的:

当我使用 polygon_data 而不是 polygon_with_holes_data 时,会出现相同的错误。知道我做错了什么吗?

谢谢!

0 投票
2 回答
462 浏览

c++ - 用孔收缩/扩展多边形的轮廓

我想使用 boost::polygon 来扩展/缩小带孔的多边形。所以为了澄清一点,我有一个单一的数据结构

其中 inPoly 包含描述矩形轮廓和在该矩形内形成孔的三角形的数据(在下图中,这是左侧的黑色绘图)。

现在我想

a)扩展整个东西,使矩形变大而孔变小(导致下图中的红色多边形)或

b) 缩小它,使矩形变小而孔变大(产生下面的绿色图像)。

多边形

角落不一定需要是直的,也可以是圆形的或以某种方式“粗糙”。

我的问题:如何使用 boost::polygon 来做到这一点?

谢谢!