1

假设我有一个矩形:

A------B
|      |
|      |
D------C

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

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

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

谢谢!

4

1 回答 1

1

不,Boost.Geometry 中没有针对此的算法。

但是,有些事情可能会帮助您编写自己的内容:

  • boost::geometry::equals()- 检查一个点是否等于另一个点,这是通过 WRT 机器 epsilon 完成的,因此您可以考虑使用自己的版本严格比较坐标
  • boost::geometry::intersects()- 检查线串是否与其他线串相交
  • boost::geometry::index::rtree<>- 加快搜索过程
    • 使用线串的 id 存储端点并搜索相等的点
    • 存储线串的边界框并搜索相应的线串
  • boost::geometry::envelope()- 计算线串的边界框
  • boost::geometry::correct()- 检查多边形/环的方向并反转以匹配类型定义
  • boost::geometry::is_valid()- 验证多边形/环是否有效(例如边缘不与其他边缘交叉)
于 2020-07-02T14:34:38.147 回答