我正在尝试根据Mark de Berg, et al. Computational Geometry Algorithms and Applications Third Edition一书中的描述实现Bentley-Ottmann算法。关于支持重叠(共线的而非不相交的)段没有明确的陈述,但是另一个退化的案例正是精确描述的。
从wikipedia我发现存在处理所有退化情况的实现,并在Bartuschka, U.; Mehlhorn, K.; Näher, S中进行了描述。但是很难理解。
提供here的方法完全相同。在第4.3小节中,我发现了以下内容:
线扫描算法的基本要素可以追溯到Bentley和Ottmann从1979年开始的工作。这里讨论的特殊公式,考虑了所有可能的退化,是由于Mehlhorn和Näher。
经过彻底调查后,我得出结论,唯一的区别是扫描线从左到右,但不是从de Berg的书中从上到下。但我无法理解为什么这个算法处理重叠段。我想看看为什么这些段被正确处理以及如何处理它们的一些证据。我们应该作为交叉输出什么:根本没有交叉点或者无限多个点交叉?
(我是alrady看了The Generalization of Bentley-Ottmann Algorithm。)
Plase帮助我找出此算法处理重叠段的方式和原因。
答案 0 :(得分:1)
重叠(我假设你的意思是,共线而非不相交)段并不难以处理。你有几个选择。