答案 0 :(得分:4)
如果线段仅在交叉点处更改,则排序,并且仅针对在给定点处相交的线段。这可以通过移除交叉段并再次插入来实现。
排序函数是y
坐标,当y
s相等时,是斜率。然后将以正确的顺序插入交叉段。随着扫描的进行,扫描线的线段交叉点的实际y
坐标将发生变化。这并不重要,因为订单将保持不变(直到我们交换,即删除并再次插入,交叉段)。无论如何都不需要存储实际的y
坐标。当我们插入或删除段时,应该动态计算扫描线的任何给定位置。
不应将有问题的数据结构称为Set
,它是Map
,或者更准确地说是有序地图。找到给定元素的邻居的操作在这里是必不可少的。