计算分段垂直映射的简单算法?

时间:2015-12-29 09:40:16

标签: algorithm computational-geometry

Chazelle和Edelsbrunner的论文An optimal algorithm for intersecting line segments in the plane定义了一组片段的“垂直地图”

  

通过在周围绘制矩形框架而获得的平面细分   段和每个端点通过垂直线段连接到   

上方和下方的边缘

(查看第3页顶部的图表确实更容易理解。)

他们发表评论

  

我们不知道任何简单的算法,无论多慢,for   计算一组段的垂直地图

对我而言,这似乎令人困惑,因为我立刻想到了一个简单的算法:

Iterate through every endpoint p
  Iterate through every other segment s
    t=intersection(s, vertical line through p)
    keep track of the closest t above and below p

  add the closest point above and the closest point below and connect them with a segment

然后我们完成了?我的意思是,这只是O(N ^ 2)运行时间,甚至不是那么糟糕。

他们还意味着这个算法不满足?他们还期望找到交叉点吗? O(N ^ 2)成对交叉检查不会这样做吗?他们想要列举飞机的细分吗?难道不能简单地使用标准算法从点+边缘到面部吗?例如走在脸的边缘?

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:-1)

论文来自1992年,作为一个例子,作者使用C代码。

当时,没有(除了特定语言,但不是快速,不易使用和代码),集合,排序以及我们今天拥有的其他非常有同情心和优化的工具。

因此,如果您尝试这样做,仅使用数组和简单类型,您可能需要大量的数组,索引和循环,这将不是很容易理解。< / p>

请注意,论文有足够的处理时间和内存使用量。