在boost几何中创建实心多边形

问题描述 投票:2回答:1

我是boost几何的新手,我用boost::geometry::assign_points()创建了多边形。但我只创建该多边形的外部和内部是空的。所以我尝试用两个多边形测试boost::geometry::overlaps() A,B和A在B里面,结果没有重叠。

那么,我该怎么做才能创建实心多边形(只知道多边形的外点和多边形内部是否有效)?

c++ boost geometry boost-geometry
1个回答
0
投票

根据定义,多边形是实心的,直到你减去内环。来自标准¹的6.1.1.1:

多边形是由1个外部边界和0个或更多内部边界定义的平面表面。每个内部边界在多边形中定义一个孔。三角形是具有3个不同的非共线顶点且没有内部边界的多边形。 ¹

重叠并不意味着你认为它意味着什么。

来自§6.1.15.3(基于DE-9IM的命名空间关系谓词)

  • 越过enter image description here
  • enter image description here
  • 重叠enter image description here 它被定义为 a.Overlaps(b) ⇔ ( dim(I(a)) = dim(I(b)) = dim(I(a) ∩ I(b))) ∧ (a ∩ b ≠ a) ∧ (a ∩ b ≠ b)
  • 包含 a.Contains(b) ⇔ b.Within(a)
  • 相交 a.Intersects(b) ⇔ ! a.Disjoint(b)

在你的情况下,你可能正在寻找qazxsw poi,qazxsw poi,qazxsw poi或qazxsw poi:

!disjoint

within

哪个打印

contains

¹intersection/ Common架构

© www.soinside.com 2019 - 2024. All rights reserved.