问题标签 [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 回答
151 浏览

c++ - boost::polygon 布尔减法导致额外的行

我有一个矩形,里面有一个圆圈。现在我进行布尔减法运算,使用 boost::polygon 和以下(伪)代码从较大的矩形中减去圆:

之后,“结果”包含一堆坐标对,其中每个坐标对都标有附加值 -1 或 1。然后我通过以下方式获取结果数据:

现在“outputData”包含形成以下结果的坐标列表:

在此处输入图像描述

所以这个洞被合并到一个完整的、封闭的多边形坐标数组中,我本来期望像 boost::polygon::polygon_with_holes_data 这样的东西,轮廓和洞是分开的。

所以我的问题是:我在这里做错了吗?如何将轮廓和孔分开,以便摆脱连接它们的额外线?是否有一个函数可以从返回的 boost::polygon::polygon_set_data 中获取 boost::polygon::polygon_with_holes_data 或者这里还有什么神奇之处?

谢谢 :-)

0 投票
1 回答
52 浏览

c++ - 重新排列单线以形成封闭的多边形?

假设我有一个矩形:

通常这个矩形是由一组坐标 ABCDA 组成的,这些坐标描述了一个封闭的多边形。

现在我没有这样的数组,而是一堆单独的行 BA、DA、BCD。绘制两者时,结果始终是相同的矩形,但在第二种情况下,会使用更多数据。所以我想重新排列和优化第二种情况,以便像第一种情况一样获得一个坐标数组。

我的问题:这是否可能通过 boost::geometry 或 boost::polygon 实现?如果是,如何做到这一点?如果不是:还有其他可能性吗?

谢谢!

0 投票
1 回答
424 浏览

c++ - C++中Boost.Geometry中的多边形变换:平移、旋转、绕线反射

我有三种类型的多边形查询,可以使用 boost 几何来实现:

  1. 将多边形平移到给定点
  2. 围绕参考点旋转多边形(不一定围绕原点)
  3. 围绕一条线反射一个多边形

由于我是 Boost Geomtry 的新手,我在理解语法方面遇到了问题。我搜索了满足我的查询的示例,但没有找到一个或发现一些对我来说难以理解的东西。您能否提供任何实现查询的示例代码而几乎没有解释?

0 投票
1 回答
477 浏览

c++ - 在Boost.Geometry中将两个多边形组合成一个多边形:只有外点,没有洞

我有两个多边形。我想将它们组合成一个多边形,使其仅包含外部点而没有任何孔。
我怎样才能做到这一点?几乎没有解释的代码将非常有帮助。谢谢你。
请参阅图片以更好地理解。

在此处输入图像描述

0 投票
1 回答
419 浏览

polygon - 如何查询 Voronoi 图?

boost用来计算二维中一组点的 voronoi 图,非常简单;

是否有一种算法来处理生成的多边形,以便查询“给定点属于哪个站点?” 可以在恒定时间内回答吗?换句话说,给定点位于一组多边形中的哪个多边形中?

当然,可以计算并比较给定点与现有点的距离,但这将花费 O(n) 时间并且不利用 Voronoi 图中编码的信息。

0 投票
0 回答
66 浏览

c++ - 如何估计 boost::polygon C++ 的投影面积

我需要估计在循环中创建的几个圆圈的 boost::polygon 的投影面积。

这个想法是对于给定的 x 和 y 质心,创建一个多边形,使用n个顶点绘制一个给定半径的圆。该圆存储在“polygon_90_set_data”中。这些圆圈可能会或不会在它们之间重叠。这在一个循环中重复多次,以创建所有感兴趣的圆圈(> 2 米尔)。我需要估计所有圆圈投影的面积,类似于所附的数字。

工作流程的想法

但是,当我尝试在我的代码中获取投影面积时,我只得到一个圆圈的面积,而不是全部。这可能是解散或合并的问题,但不确定如何操作。你可以帮帮我吗?到目前为止,这是我的代码。

我认为潜在的问题是我在哪里进行“分配”但不确定。

0 投票
0 回答
43 浏览

c++ - 使用 boost::polygon 和 boost::multiprecision

我正在尝试使用boost::polygonwithboost::multiprecision来计算多边形差异,但无论我如何尝试将两者结合起来,我总是会遇到编译器错误,例如

https://github.com/boostorg/polygon/blob/develop/include/boost/polygon/detail/polygon_arbitrary_formation.hpp#L401

以及尝试回读结果时的类似位置:

这是我尝试过的

我这样做对吗?我尝试了不同的东西,coordinate_traits但最后看起来像evalAtXforYlazy这样的惰性函数中使用的类型和表达式拒绝支持这一点。

它编译得很好,没有 multiprecision

我还尝试polygon_arbitryry_formation.hpp在需要的地方修改和添加显式强制转换,这起初很有希望,但最终导致我在这里重载源自这里的结果问题。

我进一步尝试boost.multiprecisionMPIR替换,但它们甚至没有显式转换运算符,而只是用于转换的成员函数,与evalAtXforYlazy和其他函数的兼容性更差。

我究竟做错了什么?

0 投票
2 回答
67 浏览

boost - boost 多边形相交 API 的工作方式与应有的方式相反

我不确定为什么下面代码示例中的增强多边形相交只是给出相反的输出,即它的给出区域是相交的对面。

我不知道我的多边形数据是否有问题,因为对我来说一切都很好(但不确定你是否能发现任何奇怪的东西)。

您可以取消注释注释代码以查看 2 个多边形的外观。输出可以在文件 my_map.svg 中看到,它只会显示 2 个多边形之间的交集的反面。不知道为什么它的行为相反。

0 投票
1 回答
54 浏览

c++ - 删除彼此太近的矢量线?

我目前正在使用 boost::polygon::detail::resize() 函数将多边形的轮廓放大或缩小特定大小。这运行良好并给出了正确的结果。

现在在某些情况下,根据输入形状,生成的多边形(红色)包含彼此非常接近的矢量线(黑线):

多边形

我想要做的是在这样一个多边形的所有相邻线上有一个最小距离。对于此示例,这意味着需要修改生成的多边形并添加矢量线(蓝色),以替换其下方的红线。这当然会改变多边形的形状,但会使其符合最小距离规则。在上面给出的示例图片中,新的蓝线将具有所需最小距离的长度。

我的问题:是否有任何可用的增强功能可以完成这项工作?如果是:哪些以及如何使用它们?

谢谢!

0 投票
1 回答
51 浏览

c++ - 为什么我没有得到这些多边形的任何交集?

我学习了如何将 boost::polygon 库与自定义多边形一起使用。我举了一个使用自定义多边形的例子,并试图得到这些的交叉点。我没有任何交集,也不明白为什么。此外,您可以看到这个构造函数

没有它我无法编译我的程序。有人可以解释一下,为什么我需要它?我做错了什么?

我在交叉点的结果向量中得到 size = 0 。