【问题标题】:CGAL: Intersection between a segment and a polygon?CGAL:线段和多边形之间的交点?
【发布时间】:2011-09-26 22:23:23
【问题描述】:

我有一组多边形,我想测试它和一个线段之间的交集。 我查看了手册,但找不到匹配的功能。 点、线、线段、三角形、平面之间的交点确实存在。 多边形之间的交集也在那里。 我的问题是:

  1. 有这样的功能吗?
  2. 如果不是,是否意味着我需要将多边形分解为段并在这些段之间进行交集? (我不愿意这样做的原因是,我认为CGAL实际上可能会使用这种方式来进行多边形之间的相交。为什么没有这样的函数来相交线和多边形?)或者还有其他更好的方法吗?怎么办?

【问题讨论】:

    标签: computational-geometry cgal


    【解决方案1】:

    最简单的方法是创建一个可能包含多个多边形的 Polygon_set_2 对象。要测试外部多边形与该集合的交集,您只需应用 do_intersect 方法。

    例如:

    typedef CGAL::Polygon_set_2<Kernel, std::vector<Kernel::Point_2>> Polygon_set_2;
    Polygon_set_2 ps;
    Polygon_2     poly;
    Polygon_2     line; // line is a polygon defined by 2 points
    
    ps.insert(poly);
    bool intersect = ps.do_intersect(line);
    

    更多关于 polygon_set_2:

    我希望它很清楚, 基里尔

    【讨论】:

    • 哦,我没有意识到一个多边形只能包含两个点。似乎有效!
    • 是 ps.insert(poly); ps.插入(行); ?
    • 我得到这个错误:解释:多边形边界自我重叠。
    • 它对我不起作用。我的错误是 Polygon_2 线;只有两点。它说“解释:多边形边界自我重叠”。只要我在这条线上添加第三个点,它就会起作用。任何解决方案????
    • 是的,CGAL 4.7 这绝对行不通。使用只有两个点的多边形调用do_intersect() 失败,并显示“多边形边界自身重叠”的消息。和“多边形并不简单。”
    猜你喜欢
    • 1970-01-01
    • 2018-05-01
    • 2014-08-24
    • 1970-01-01
    • 2021-11-12
    • 2019-10-03
    • 1970-01-01
    • 2012-11-15
    • 2018-01-09
    相关资源
    最近更新 更多