一尘不染

Bentley-Ottmann算法的推广

algorithm

Bentley-
Ottmann算法用于确定线列表的交点。但是,如Wiki此处所述,存在一些缺点:

该算法假定线段不是垂直的,线段的端点不位于其他线段上,交叉仅由两个线段形成,并且没有两个事件点具有相同的x坐标。但是,这些一般位置假设对于线段相交的大多数应用是不合理的。

我的问题是该算法是否可以克服/克服以上困难?


阅读 517

收藏
2020-07-28

共1个答案

一尘不染

您链接到的Wikipedia文章包含有关处理这些特殊位置的部分,该部分建议对基本算法进行以下修改:

  • 按照惯例,一个点位于垂直上方的点的“左侧”。因此,垂直线的“左”端点是其 端点。
  • 事件可能包括两条 或更多 条线的交叉。
  • 当到达事件点时,其入射段必须在扫描线中 反转 (不能交换,因为可能会超过两个)。
  • 处理过境后,可能要删除 两个 以上的旧事件点,或者要插入 两个以上的 新事件点。
2020-07-28