【问题标题】:How to convert a path to a CGAL structure如何将路径转换为 ​​CGAL 结构
【发布时间】:2020-10-01 06:05:05
【问题描述】:

给定由以下语句组成的路径:

  1. 移到
  2. lineto
  3. 关闭路径

如何将路径转换为CGAL::Polygon_with_holes_2 列表?

更具体一点。该路径可以是一串字形的轮廓的线性化的输出。考虑例如文本字符串“xo”变成了这样的路径。这将导致 3 个不相交的封闭多边形:

  1. 对应于“x”的逆时针多边形
  2. 对应于“o”的逆时针(几乎是圆形)多边形
  3. 与“o”中的孔相对应的顺时针(也几乎是圆形,但更小)路径

如果我正确理解 CGAL 的文档,这可能会作为两个 CGAL::Polygon_with_holes2 存储在 CGAL 中。但是,在给定上述三个多边形的路径的情况下,您如何构建这些?是否有一个方便的功能,还是我必须检查所有路径多边形的交叉路口?

【问题讨论】:

    标签: cgal


    【解决方案1】:

    您可以使用following constructor 获取外部边界多边形(必须是逆时针方向)和孔的范围(也是Polygon_2 对象,但顺时针方向)。

    您可以使用一系列二维点构造Polygon_2

    【讨论】:

    • 是的,但这并不能解决如何自动计算哪些顺时针轮廓是逆时针多边形的洞。
    • 您可以使用函数bounded_side() 与多边形的一个点来了解嵌套。进行的方法是取具有小轮廓点的多边形(按字典顺序),然​​后检查是否包含另一个。您可以过滤然后使用它们的边界框更快。当然,这是假设多边形是不相交的。
    • 谢谢,我想我有足够的信息来写点什么。我想我所希望的,一个现成的“多边形列表”→(一个较小的)“带孔的多边形列表”希望太多了。
    • 其实我在3D写了三角形网格。
    • 也许这是我为 CGAL 的 2D 案例做出贡献的机会。 :-)
    猜你喜欢
    • 2016-07-14
    • 2022-12-19
    • 2020-11-30
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2019-04-14
    相关资源
    最近更新 更多